Possibly due to a sticky idle air control. Try spraying some of the carb cleaner solutions into the intake and also from the air box housing (this is a challenge).
Another alternative is dirty fuel injectors, try and use a carb/inj cleaner and replace the fuel filter if worn. Although these would cause issues across the board.
There may be an interaction between the cold start devices (sensors & mixture enrichment devices) and the idle control valve. The idle control valve is a well known cause of idling probs, but usually manufests itself throughout the temp range - or even only when hot.
More likely - the idle problem is either to do with the mixture enrichment for cold start and/or the sensors which detect the cold start requirement.
If you can't find someone who can say thay KNOW what it is, then it would be best to take it to a workshop with the Bosch DME diagnostics and let them have it overnight to run checks as it performs the cold start.
The various air intake hoses on BMWs tend to deteriorate with age and exposure to ozone and oil. Check carfully under the air intake. Remove each hose if necessary.
Also, carbon build up on the intake valves will also produce the problem above, when enough carbon builds up the carbon absorbs the gas until it is saturated, at which point gas goes in the engine. But when the engine attempts to start the vacuum created in the engine sucks the satruated gas in the carbon flooding the engine.
Try running Techron or if severe have the valves blasted with walnut shells. Also, there are cleaners used by professionals which bypass the fuel system and do a good job as well.
Another possibility is a loose throttle body, any loose connection in a air intake system can cause this. Too much cold air is not good and when you have a warm engine the air become warmer so it is running better. Other things to check:
- idle speed sensor fault - vacuum leak somewhere - sticky throttle body
The big rubber hose between the air cleaner house and throttle body housing is worth checking.