I just finished correcting my blower motor issue on my 91 318iS. If the fan only blows on switch position 4 then your resistor pack is burned out. Its a $25 part, and takes about 20 minutes to swap out. It might visually check out, but the thermo switch built into is is what fails, not typically the resistors themselves.
My blower was only working on speed 4, and even then only when it felt like it. To me that was either a loose/poor electrical connection or a faulty blower. The wiring diagram is really simple and easy to trace. I wouldn't bother blaming the switch as I personally have never seen one fail that wasn't obviously so.
The deal with my blower was the carbon brushes. They were very worn, and realistically only have about 2mm more of usable brush before the copper wick will start grinding down. 2mm ought to last 1-2 years given average blower use. The problem now... even though there is still usable brush material the spring that keeps it pushed hard against the amature is at the end of its extension and simply is not pushing hard enough to provide ample electrical contact.
As far as I know the correct brushes are not available from BMW, which is sad since they would total all of $5 or so. You can desolder the brushes and bring them to an electric motor store and find a suitable replacement... or you can apply the free bandaid I did. I bent the retaining tangs back for the spring, and inserted a 5mm square hard rubber block (hand cut from a rubber mount I had laying around) and insert it into the bush guide you opened up when you bent the tangs out. Now hold the block down and carefully close the tangs.
Now the spring will be pushing as hard as it was when it was new, and your motor will haul ass. Mine does, and all it ended up costing me was about 2 hours of my time.