I've gone back and forth a lot. Hated my X1600Pro due to poor compatibility so I went nVidia with my laptop, but had overheating issues with that and was convinced by people here on Tech Forums to go back to ATi instead of the GTX470. I got a 5870 and it's amazing, it isn't as fast as the GTX480 but it is still ridiculously powerful, supports 3 monitors (Eyefinity), and is more power efficient than nVidia's new cards. This means it runs cooler and quieter than a 470 would and you don't need as big of a power supply either.
As for the compatibility problems that I hated my X1600Pro for, they're pretty much gone now. Back then ATi had very VERY horrible Linux support and I couldn't get even the most basic of 3D rendering support on my card (Compiz, the 3d effects desktop that Linux has, worked on my old nVidia GeForce MX420 but not on the much better X1600Pro due to driver issues). However, after AMD bought ATi, they released a lot of previously restricted information about the Radeon hardware and open-source driver projects quickly brought solid support to all of ATi's cards. Today, ATi provides a solid proprietary Linux driver as well as a growing open-source, community driven driver. nVidia still only provides proprietary drivers but they have always been solid and powerful. On the Windows front, both companies have good driver setups.
The only thing nVidia has that ATi doesn't is CUDA. This in turn means PhysX but it really isn't a big deal. Both ATi and nVidia have implemented OpenCL as well as DirectCompute in their latest products. OpenCL is a high-performance GPU computing system similar to CUDA that complements OpenGL and is cross-platform. DirectCompute is another high-performance GPU computing system that is part of the DirectX 11 specification. nVidia also has CUDA (its existing GPU computing system that was introduced in their DX10 cards starting with the 8000 series) but most likely CUDA driven apps will begin to replace it with OpenCL or DirectCompute for better compatibility.