I would start with:
- checking spark plugs and while I'm there check the coils if they are soaking in oil. It is very common on this engine to have the valve cover leaking oil and fooling the spark plugs.
- check MAF , (disconnect and start the engine see if runs better)
-check for vacuum leaks (with the engine running spray with braking cleaner around intake and intake boot and see for any change in idle)
Any smokey starts?
JOY = BMW