Ohhhhh man hav I been there. My 97 528i would oveheat at idle only. When at a stop light it would start to shoot up on the thermostate. I would rev it up to about 3 grand and it would cool right back down. I also lost heat at idle. So this seemed to be a flow problem. All I did was get some Prestone coolent flush . I drained the system. disconnected the "hot" ouput hose from the radiator, made a seal around it with a garden hose, and flushed the system backwards for about 10 minutes I then filled it with water and added the prestone flush stuff. Ran the car for 10 minutes, drained the system and flushed backwards again. Ran the car for another 10 minutes (with just water). filled it up with a 50/50 mix. Have not had a problem since. even on 95+deg days with a/c on. The fan also started to work, its on a different sensor then the temp pickup. Turns out that side of the radiator wasn't even getting hot, because the coolent wasn't flowing to it. I hope you try this and it works for you, 5 just had clogged lines, didnt have to spend a cent on replacing any part. (that doesnt happen often).
Remember there is a reason for everything, just gotta figure out what it is from the hints your car gives you.