Cleaning ICV is easy. Once you get it removed, just spray
it with some carb cleaner from both ends. Look inside to see that it clean and you're good to go.
However, before you finish, besure to check the continuity on your Throttle Position Sensor. At closed throttle you should get zero ohms between two of the connections on the TPS. If you are reading between 1 and 5 ohms, you will have problems like you described. I chased my idle problems on my M30engine for months before I noticed I had slight resistance in the switch. Basically, if you are getting 1-5 ohms, the computer does not know your throttle plate is shut and doesn't know what to do.
Good luck.
Jeff in MN
87 535is 245k Recent top end re-work
88 528e 290k
90 535i 115k
98 740i 115k New Magnaflow Cats, No More Codes