I've recently started to learn Cocoa, and I was blown away by the simplicity of the NIB file/Interface Builder pattern (I believe that this is possible with GTK/Glade (http://glade.gnome.org/) as well). It makes life so much easier to have your interface be a bunch of serialized objects waiting to be revived. It also makes GUI builders trivial to build, which greatly increases my confidence in the tool. It relieves my need to "check up" on the generated code since there is no generated code. I, too, don't see any overriding technical issue that would keep this from becoming a reality in the Swing world, and it would remove one more barrier to entry into Swing programming.
As for the resurgence of the desktop client, I think you hit the nail on the head as far as the two overarching issues. I write web apps as my day job, and there is constant discussion on our team about how much more rich the user interaction could be if we wrote a desktop app that spoke to the web servers via web services. It's just so much easier to distribute a web app, and the "interface" is simple HTML. It's fast to create and easy to maintain. Hopefully, the people at Sun are listening. I know many of them have macs from Romain Guy's recent "Meet the Swing Team" posts (http://www.jroller.com/page/gfx?entry=meet_the_swing_team_part and http://www.jroller.com/page/gfx?entry=meet_the_swing_team_part1). So, fire up XCode and Interface Builder, and see what we're missing in the Java world guys!
By the way, Swing Hacks rocks.