I started on KDE pre-1.0 versions... they crashed all the time (KDE still crashes occasionally, btw!). I found Gnome
... (no not really Gnome, but the underlying framework GTK) the most usable and I've been using Gnome for very long. Then I noticed how slow the desktop is and searched for lighter alternatives... Xfce seemed to be nice, but I did not like the weird look it had at that time. So I landed back on Gnome again.
Gnome2 was long time my desktop until I've seen what they plan for Gnome3. I also tried Ubuntu to see how Gnome3 works. Gladly, FreeBSD did not import Gnome3 long time, so I could use Gnome2 a bit longer. But at that time I also began to learn about alternatives and notice how much crap Gnome2 and Gnome3 has running in background. I started to learn how a TRUE Xorg desktop should look like and decided that KDE and neither Gnome are like cancer to Xorg.
Someone on IRC mentioned Ion as a tiling WM. I got interested and tried it. At that time I was really lazy with configuring desktop manually. Ion3 had a license dispute with FreeBSD and it disappeared from ports. I decided not to use it, because all the resulting annoyances. But I remembered tiling WMs as being useful, IF one wants to use keyboard hotkeys.
I tried to go with Fluxbox... but it was a bit annoying at some points and I changed to the sister project Openbox. I liked Openbox very much. I also noticed that a terminal is far more important. I started to ignore file managers from now on. This has been an important change. I always preferred a desktop with a decent file manager, because one thing I considered to be annoying is doing simple file operations in the terminal. It changed to the opposite now and I rather began to think how to write efficient desktop macros and scripts to make everything more fluent. I also themed my desktop in different ways and decided NOT to use any eye candy, because it is simply not improving the usability and neither efficiency. One thing I learned with Openbox is that vertical screen space is important and that I prefer to have my windows at the left screen edge. Consequently, I've put the lxpanel at the right screen edge. What also was very important for me is to manage my desktop configuration in Git, because I re-used my desktop on other PCs and merged the differences for special parts in a way that I did not need to think about what platform I use and which host it is.
I was pretty satisfied with Openbox so far, but I decided not to sit on it all the time, because I might ignore the developing new desktops. I tried Gnome2/3 and KDE again... and found them HORRIBLE(!) after using Openbox for a longer period of time. I decided to look at other WMs and found Xmonad which people mostly laughed at as a joke being that minimalist. I tried it... and FAILED horribly... I noticed that I need to learned Haskell... at least a bit.
It took a long time... I learned some Haskell... and it is quite fun, I can tell you. I tried Xmonad again and copied some of the useful configurations. I also put them in my Git repo. I found it far easier to manage different platforms and hosts, because Haskell is a full-featured programming language.
It started as a joke... Xmonad... but after configuring the details, I can see how much more productivity and usability increased. I admit that I would not recommend to anyone to use Xmonad... by why the hell do I need to tell you what to choose or convince people about efficiency of Xmonad. This is YOUR personal preference and it always ends in annoying flamewars. I just recommend one thing... take a look at the desktops... it will take some time... and you will even need to (OMG!) actually LEARN something to use it properly.
And one thing is sure... I will never say that Xmonad is my last word... I will take a look at everything I find and never give up to give a project a chance... even KDE and Gnome (when there are some notable changes).