So I've identified a few ways I use my computer and I'm setting up a user account for each one:
* coding in Ruby
* coding in Java for work
* blogs and email (and hacker news)
* personal and household maintenance
If it goes well, I'll try to write it up in a blog post.
Have you looked into a virtual desktop solution yet? I use virtual desktops for very similar reasons (tuck all the real time wasters away in one desktop, put music playing controls and such in another, and use every other one for a different task), and I find it does a very good job of keeping me focused on the task at hand without getting in my way when it's time to do something else. Each one of my desktops is just two keypresses away, but there's no indication that anything is even running in any other desktop but a tiny square in the bottom right corner of my screen.
There's a free version on their website (scroll down a bit) if you'd like to try it. It lacks the toggle hotkeys, but it'll let you know if it suits you before buying.
Physical separation has been great. It makes it much easier for me to remember which context I'm in, and it makes context switches obvious.