A lot depends on how much you are willing to spend.
If you want top sound, and cost is not an issue, then look into the JL CleanSweep. It not only converts the signals from your head unit to clean line-level output, it normalizes the frequency response to be perfectly "flat". This is important because when car companies design the audio system, they tweak the output to make up for the crappy speakers (and vise versa). If you just amplify the factory signal and send it to good speakers, you will amplify any unwanted peaks or lows and the sound will suffer. I heard a demonstration (using a Honda headunit ... BMW may be better or worse) and the difference was pretty obvious.
After you use the CleanSweep, you can add an amp, and any other speakers you want, and the quality will be as good as you are willing to pay for. Most amps these days are fantastic, so don't get caught paying too much when the difference is undetectable. Any good brand's mid-lever amp should work well. (Unless you plan to compete...) As far as speakers, you will find that it is a matter of taste. I like Infinity for a less expensive option, and Focal if you have deep pockets. Their are lots of other good ones, though. It pays to audition them with a CD that you are very familiar with.