One of the things I've learned is that you have to figure out what you want from a desktop. Many people want to be able to hover their mouse at a screen edge and automatically pan into the next desktop over. I find that annoying. Many people seem to find it natural to think about desktops directionally: go up, go left, go right. I did not find that natural. I want to organize my desktops by function (e-mail desktop, web desktop, project A development, project B development). When I want to go to my e-mail desktop, I don't care where I am right now.
I started out with jsPager, which is freeware. I have included a link, but it no longer works. As near as I can tell, the author and home page have now evaporated from the face of the earth. jsPager presents your virtual desktops as a rectangular array, from 1x1 to 3x3. It allows mouse edge panning, but fortunately it can be disabled. It allows definable hotkeys to move left, right, up, and down, which I found useless. It does put up a miniature map of the entire universe, with mini versions of all of the windows in their relative locations, and allows you to click on one to switch to that desktop. I found that very natural. However, it did not have the ability to assign a particular hotkey to a particular desktop. I had to use the mouse.
jsPager works by moving the window coordinates. Windows on non-visible desktops have negative or large positive coordinates, placing them well offscreen. This works well with most apps, although it does not work for Microsoft PowerPoint.
One of the side effect of this is that ALL of the windows on ALL of the desktops always appear on the task bar at all times. Clicking on a taskbar icon was usually the quickest way to change desktops, although the taskbar does get a bit crowded.
I did get used to jsPager, and I have been using it at work for about 3 years, despite a crash here and there. However, for some reason, it does not work for me at home. I work rather differently at home; most of my home work is monitoring newsgroups and surfing. At home, I tried the Microsoft Virtual Desktop powertoy. This uses an entirely different philosophy, using the more obscure Windows XP "desktop" feature. It has a minimalist feature set. It always creates exactly 4 desktops, no more no less. It adds tray icons to select one of the four, and creates (fixed) hotkeys to switch directly to them. It has been working well for me at home, where 4 desktops is enough.
This week, I encountered goScreen. I have fallen in love. I have uninstalled jsPager and turned off the Microsoft PowerToy. goScreen is shareware -- about $29 -- but it is worth every penny. The author, Andrew Guryanov, has done a fabulous job with the details in this app. The program is extremely configurable, so that you can make it work like almost any of the other tools. It allows up to 40 virtual desktops. It u can display its window map either as a docked (and hideable) toolbar at a screen edge, or as a rectangular map like jsPager. Or, if you prefer, it can show the universe as a simple listbox. It uses a simple hide/show paradigm for switching desktops, which seems to be faster than either of the other choices. It also supports the assignment of specific hotkeys to specific desktops. It allows you to "lock" certain applications to certain desktops. It allows you to have some windows that always appear on all desktops. It allows you to change window locations by dragging and dropping, or by using a simple right-click on the window map.
It even has some weird features that might be useful to some people. One of the problems with a full stack of apps is that it can be difficult to pick the app you want. goScreen has a feature called "packing", in which it rearranges your windows so that the title bars are all visible in a neatly spaced stack. When you click on one of the apps, the windows rearrange themselves so that the other title bars are still visible. I had not seen this in a desktop manager before.
I strongly recommend goScreen.