I've tried them all; Windows, Mac OSX and Linux. Windows sucks for software development, but if you have to use it and are not locked into the .Net/CLR environment using Visual Studio, make sure you install Cygwin, which makes it kind of useable for some tasks (Emacs, Perl, Clojure and more). I tried going with the Mac OSX momentum as well; it has a solid Unix foundation which makes most development comfortable if you are coming from the Linux side of things. Unfortunately, it is also quite often just different enough the traditional Linux setups, so you most often need to install tons of other stuff in addition to the standard things that comes bundled with it. So pretty soon you risk having multiple versions of perl and other commonly used tools, essentially a whole "tree" of "non-standard" utilities to keep up with the stuff needed for using the latest versions of whatever tool needed. The thing that kept me from settling in was the lack of a decent full screen mode (maximized Window mode; this is from a couple of years back) and the fact that it never felt like Emacs was a first class passenger on Mac OSX (I went to hell and back trying to get it to recognize my favourite bitmap font; without success). So in the end, I wasted a lot of time (again) to get my Linux GUI setup decent, and it was for a couple of years (Ubuntu Linux 10.10 and 11.04).
A couple of years later, I'm sad to say that the state of the Linux GUI is still sad. With the right combination of laptop and age, you may very well be able to have a great functional stable GUI. Unfortunately "right combination" usually means "not too old and definitively not too new". On the "too new" side, it's mostly possible to get things working by installing development packages etc, but that's definitively not for the newbies out there and require skill, knowledge and a lot of effort. On the "too old" side of things, you may be SOL, thanks to proprietary drivers (in my case nVidia) no longer being supported.
Even more maddening is the fact that the GUIs themselves seem to have gone from "stable, functional and nice looking", to "unstable, barely functional, but possibly looking better than ever". A couple of years ago I moved from KDE to Gnome 2, after years of frustration with getting a stable networking applet running under KDE, shortly after KDE had it's own "evolution" from KDE3 to KDE4 (not a great success story either at that time). Switching to Gnome 2 gave me great hopes for the linux GUI side of things; it just worked and looked great.
Fast forward until the last few months; Gnome 2 is considered "to be discontinued", and we've gotten even more spoiled with eye candy, transparency and more on all platforms. Ubuntu has launched their own project, Unity, and Gnome is working on upgrading to Gnome 3. Both these bring entirely new GUI paradigms to the Linux desktop, and common to both of them seem to be focusing on the "laptop/tablet" factor only. That means that if you need to run applications full screen on a small screen, the new paradigms work ok; it takes some getting used to, but nothing major. But on our "old" (by now industry standard in software development) big screen, and even multiple big screen, setups, the new paradigms offered simply aren't ready.
Unity, running on top of Gnome 3, tries to go in the direction of OSX it seems, forcing the menu bar to always appear on the top of the screen. Sadly, a lot of Linux users are used to "focus follows mouse" instead of "click to focus", which means that unless your application is nailed to the top of your screen, you need to navigate to the top screen menus for your application without the mouse passing over any other application (which would activate another set of menus). Workaround are either to activate "click to focus", or run your applications full screen. The upshot is that Unity offers great keyboard navigation shortcuts, so maybe I will finally be able to adjust myself to accept "click to focus" (and use the mouse even less overall).
The Gnome Shell offers an alternative to Unity, also running on top of Gnome 3. I haven't made my mind up yet which one I prefer; I'm trying to get used to both.
Gnome 3 (or possibly the Gnome Shell part of it in a couple of cases) add a lot more eye candy.But also seem to target exclusively (at least initially) the laptop/tablet form factor. And they are even more ambitious as far as "revolutionizing" the desktop metaphors go and remove well known entities such as minimize and maximize buttons, and state the concept of workspaces are probably better anyway. Workspaces are "secondary desktops"/screens whatever that you can easily move between by pressing ctrl-alt-arrow-up and -down. That works fine, at least until you are on your dual screen setup again. Then notice that the workspace scrolling (up and down) only happens on one monitor; the workspace does not switch on the second monitor. At least Unity managed to keep the expected "workspaces" behaviour.
Generally, Gnome 3 (meaning both Unity and the Gnome Shell) seems to have messed up Alt-Tab for switching Windows. Alt-Tab now switches applications, so if you need to go to a certain window in an application, you first have to Alt-Tab to the proper application, then wait a second or two for the Application to show it's windows, and then keep tabbing to the right window. Alt-` (the button above tab) allows you to switch windows inside the current running application, but not to windows in other applications. For at least some of these changes, workarounds are supposedly available but I haven't gotten them working yet.
I've done most of my testing for the last couple of months on alpha and beta versions of Ubuntu 11.10 Oneiric, but unfortunately the improvements seem to be slow arriving, making me doubt whether any new desktop will be decent to launch sometime in October. In addition to the issues I've mentioned already, it also seems a lot of the desktop customization stuff seem to have disappeared from Gnome 3. Simple things, such as modifying system fonts and sizes and/or various theme/icon settings does not seem to be included in System Settings anymore. There is a package with a tool that has such settings (gnome-tweak-tool), but based on the type of experience I got used to from Gnome 2, that tool looks kind of foreign and a lot of the settings related to themes etc simply do not work.
Having said all this, I still believe Linux (and the people and movements behind it) offer a much more compelling overall development experience that most other systems, and I can take a lot more pain before giving up, but here's hoping and praying that Linux based groups will manage to pull through and deliver a great experience in the end. Unfortunately, I still the "Linux Desktop" for "normal users" is still a couple of years ahead. Based on the progress the last five years, it could be even longer, but I'm keeping my fingers crossed that it will be fixed long before that.
And finally, some notes to myself below on what I need to do to get a decent Ubuntu 11.10 Oneiric system going:
Alt-Tab changes: Supposedly, there is a workaround for getting rid of the awful Alt-Tab changes, but I haven't gotten it working on my system yet (Unity does not allow Shell Extensions at all; Gnome Shell allows me to install and enable it using the gnome-tweak-tool, but then Alt-Tab simply does nothing). If you want to try, google gnome-shell-extensions-alternate-tab .
Atheros wireless drivers: This one seems to be haunting Linux. For older type cards (lspci outputs "Intel Corporation Ultimate N WiFi Link 5300") it seems the full series of Oneiric alphas, and betas so far, has a regression as far as cryptography in the "iwlagn" driver goes. To work around it and get decent wifi speed again, add "options iwlagn swcrypto=1" to /etc/modprobe.d/iwlagn.conf . For newer cards, add "options ath9k nohwcrypt=1" if you're having really slow wifi. Hopefully these will be nailed (again) before the final Oneiric release.