It depends what you have already. When I first got mine I was shocked at the poor quality of the stereo (base model with only CD, Radio and AUX) which had a really bad sound quality.
So I stumbled upon a video showing how to retrofit an OE headunit that had Bluetooth (calls) and USB control built-in. So I did this mod and found another, far more important, improvement... the internal amplifier was far superior! So I now had much better sound
This, to me, is a first stage upgrade, at least at the time anyway. Of course, if you want more modern tech then you're going to have to fit something like the Android Touchscreen or an iDrive retrofit with an mmi box.
You can replace the headunit with a non-BMW unit, and even have adaptors for the steering wheel buttons and PDC sounds so they are fully functional. Personally I don't like that look though, but that's because I prefer it to look as OE as can be, that's just me though.