I agree with Will. Zaino works well, just be sure to have vacuum around because it dusts like crazy. Zaino Glass polish is the easiest approach to take, but the costs keeps me from using it on my customer cars.
For customer cars, I normally use Optimum Poli-seal with my UDM and a white LC Polishing Pad (Now I use an LC glass polishing pad) with good results to clean off the water stains and add some protection. Then I use a "clean" QD like Final Inspection to get the excess polish off, and then Stoners glass cleaner. Doing it this way was very successful and it leaves the galss very clean, it just takes a lot of time. So I rarely do it unless nothing else works. I have also seen others use different AIOs (like Zaino Z-AIO) with success.
I recently did get a Diamondite Glassworks kit for my car, but I did not get enough time to use it yet. It looks like it works off of the same principles as using Poli-seal though.