Here's how I got Hibernate working on my Thinkpad X201, currently running Debian Squeeze.
First, make sure you have a swap partition at least as large as your RAM. Following that little incident last year, my swap had a different UUID and I never realised it was never mounted. Manually editing /etc/fstab following the useful blkid output did the trick.
Second, install uswsusp, helpfully discovered thanks to the ThinkWiki.
And that's it! Hibernate works, through the Shutdown menu and pm-hibernate, and so far Suspend doesn't seem to have been adversely affected. Woohoo!