Usually if you are experiencing cold start issues - but the problem goes way once the vehicle gets to normal operating temps - then you need to replace the coolant temp sensor. If the coolant temp sensor has failed, or is sending out of range data to the DME, the DME does not know how to properly compensate for a cold start condition. Once the vehicle hits normal operating temp, the DME is able to compensate better (air/fuel mixture) and will run in limp mode basically so the car can still be driven.
Since you already pulled and cleaned the ICV and there were no changes as to how the vehicle runs when cold, I would definitely suspect a faulty coolant temp sensor.
As you can see in the link below - there are (2) sensors located on the driver's side of the head. # 6 is the coolant temp SENDER for the temp gauge in the cluster,
# 8 is the coolant temp SENSOR and relays engine temp back to the DME. These locations and part descriptions are also confirmed in Section 12 (12-106/2) of the genuine BMW E30 Repair Manual. (#8 in the realoem link below is the one you want to replace):
http://www.realoem.com/bmw/showparts.do?model=AF93&mospid=47305&btnr=11_1505&hg=11&fg=15Also - you can get decent deals on parts at
http://www.rockauto.com - if you need an O2 sensor, just look one up for a 94 Mustang GT (5.0) and you can get a BOSCH universal from rock for under $50... It's easy to install or splice into your existing harness, really a no brainer, just need the time to do it...
If you google "rockauto discount code", you will also be able to find codes that will give you 5% off of your total order. Sure, 5% is not a huge discount, but if you are buying multiple things, it surely helps in the end.
You can purchase almost all needed sensors for the M42 on rockauto as well - some are cheaper than your local auto parts stores and those of some of the online BMW vendors.