I disagree with GTK, and I recommend Qt.
I use several GTK apps on Windows and they don't look native. Furthermore, GTK has some deeply ingrained usability issues - such as the close button - that they bring to all platforms.
I love Qt, and much prefer working with it to Cocoa, but Qt on OS X is ugly and doesn't feel particularly native. I can usually recognize a Qt app as soon as it starts up. It still gets the job done in the cases where elegance doesn't matter (i.e. we have a tool for optimizing query parameters that has a Qt GUI that we just use internally), but for places where it does, it's better to go with Cocoa.
This is why Steve Jobs is against ALL cross platform development. Because it's going to be a lowest common denominator. At the same time, advancements on the platform are not going to be taken advantage of. Any new features in OSX would go unused - because it's not in the lowest common denominator. As a Java dev, I have to say he has a good point there. I just wish Objective C didn't suck so much.
I'm guessing the close button on dockable floating windows.
Is there an implementation of GTK that doesn't run via X11 on the mac? Gimp/Inkscape are lovely software on Linux, but using them on the Mac drives me insane. They're "meh" on Windows.
I concluded a while back that the only decent way to do GUI programming properly was to develop multiple native frontends for the platforms you want to support. Everything else seems to produce crap.
I haven't found the ideal runtime/language for this yet, though. The C family is an obvious candidate but is a little more low level than necessary for desktop apps. .NET/Mono seems promising, though I do worry about having to distribute the Mono runtime with apps. Plus, people seem to have an irrational fear of it (though probably not end-users).
"I concluded a while back that the only decent way to do GUI programming properly was to develop multiple native frontends for the platforms you want to support. Everything else seems to produce crap."
This +100. Qt is OK-ish if dev resources are a bigger concern than platform integration, Gtk is not even remotely integrated with the platforma (well except in a Gnome desktop where it basically is the platform), and all the other attempts like wxWidgets, Tcl/Tk and the hundreds of smaller projects/products don't even come close.
Anyone developing desktop software who want to make his application feel 'native' to each platform has to make various frontends, with each platform's native UI toolkit. It takes some careful design but it's not all that painful, really.
I've been very satisfied with Qt on the mac. I've ported a couple of linux applications I use. They are not as good as truely native ports (MacVim is clearly more of a "mac" app then any Qt built application), but it gets basic things like menu bar at the top and shortcuts using command instead of ctl right.
It's meh. Not as bad as GTK+ by a long shot but still a far cry from native applications. And OSX users generally don't like non-native applications (for a number of reasons)
Nothing, Nokia has come along way with it. It the latest (Qt 4.7.0) they are slowly getting things closer and closer to native look and feel. There are carbon and cocoa versions for the mac. The Cocoa version obviously integrate better than the carbon version will. There are also Qt classes to integrate Qt based widgets into cocoa based containers etc. Is it perfect, not even close. Is it pretty darn good, yes.
Here's an example: I use WorkRave to remind myself to take breaks. If I open the preferences dialog, I can close it by pressing Close, clicking the X in the corner or pressing Esc. No matter what I do, my changes are saved.
In Windows the guideline is to use Ok & Cancel buttons while most of the GTK apps I've seen use just a Close button.
GIMP is a mixed experience: most dialogs have both buttons while others just the close button.