nowadays I only have one thing that holds me back on OS X and as much as I try to get over it, it still trips me up. that thing is application-centric switching.
the interface that does exist has some pretty maddening inconsistencies. ⌘ + ⇥ can be thought of as moving an app to the top of your attention stack. when you select it, its neighbours change and switching becomes a case of most-recently-used. unfortunately, ⌘ +` works more like traversing a list, neighbours never change. these two actions should be acting the same!
application switching is almost never what I want. thanks to Spaces, nowadays I can break tasks up by desktop and most spaces will not have more than one window per application, but at the end of the day what I really want is something like this:
only show visible windows. obvious which app they belong to. easy to tell what windows they are. if I want to go to a window or app that is not visible, I can use the Dock.
I'd accept being able to override the ⌘ + ⇥ key binding, being given the necessary WindowServer access to get the needed information (without resorting to dirty hacks), and writing it myself. that would be ok.