I've go a strange problem with my 99 328i. Symptoms are as follows:
slightly rough idle, not as smooth as normal
no error codes
after running at speed (70-80 mph for 10-15 minutes) and then either coming to a stop or having to slow for traffic makes the car run very poorly for the next couple of minutes with pronounced stuttering or misfiring. this will clear after a minute or so and the car runs normally again. you can run at speed for 10 minutes or 30 minutes - the rough running will occur either way. while at speed everything's fine and the car seems to run strong and smooth.
in 4th or 5th the car won't pull cleanly below 2000 rpm but is fine after that
I'm a bit puzzled. The lack of error codes for such an obvious misfire is odd - I would have thought the ECU would sense something was wrong.
I will check the fuel pressure as best I can - can't really do that when the car is moving but at least at idle and with and without engine vacuum applied to the regulator.
I would suggest you bring it to a good BMW shop. Without fault codes, substituting known good parts and looking at live data is your best best. This is a common engine, so swapping parts (a bad MAF sensor comes to mind, and won't throw codes) is a quick and easy diagnostic strategy. Not so easy for a DIYer.