Quickly Empty Trash in Mac OS X
If you do it through the Terminal it is nearly always considerably faster:
rm -rf ~/.Trash/*
However it can be noted that this won't delete files that appear in your Trash from external hard drives, other partitions, etc. Those files are stored at /Volumes/NAME_OF_DEVICE/.Trashes/USER_ID
where USER_ID is your user ID. (Usually 501 on a single user system) and you'll have to remove them using a second command. (sudo rm -rf /Volumes/*/.Trashes/501/*
should do all of them for you)
As always when using rm -rf
be completely sure the path you've typed into the Terminal is correct or you're liable to delete much more than you mean to. (eg. a space before a * is never good)
As to why the Finder takes so long, the Finder does some extra work of deleting files from all the devices attached to a computer, overriding permissions if necessary (using a subprocess called Locum), file stats, among others.
Check to see that "Empty trash securely" is not set. This erases files multiple times, so it takes much longer to delete.
The setting is in Finder's Preferences on the Advanced page. I've heard that sometimes a Snow Leopard upgrade accidentally sets this option.