1. Socket.IO (http://socket.io/)
It lets you use websockets and automatically fall back to flash sockets, long polling, or several other real-time communication methods if websockets aren't supported by the client. There's a JS client and node-compatible server, as well as in-progress server implementations in a few other languages. Node is nice by itself, but it's with things like Socket.IO that it really shines.
2. Coffeescript (http://jashkenas.github.com/coffee-script/)
Coffeescript is a nice-looking and nice-to-type syntax on top of JavaScript. It's made JS development a lot friendlier, and I now miss things about it every time I'm programming in Python and Ruby. I now use it whenever I'm doing any significant amount of coding in JS.
3. Node.js (http://nodejs.org/)
Node should, by this point, need no introduction. Server-side JS. Plays very nicely with websockets thanks to Socket.IO, making it very easy to write the server-side part of real-time webapps. I've also found it very useful when trying to quickly prototype simple non-webapp things that have to communicate over a network.
I haven't had a chance to check out Backbone.js (http://documentcloud.github.com/backbone/) yet beyond a very quick look, but I expect to use it (or something like it) next time I'm developing something that uses a significant amount of client-side JS.
I'm also very excited by the continued development on (and Yehuda Katz's participation in) SproutCore (http://www.sproutcore.com/).