I just have a "startwork" script that uncomments my etc/hosts files.
#!/bin/sh
bash -c "awk '{sub(/#127/, "127")};{print}' /etc/hosts > /etc/hosts.new; mv /etc/hosts.new /etc/hosts;"
And my etc/hosts looks like this:
127.0.0.1 www.onemorelevel.com
127.0.0.1 onemorelevel.com
#127.0.0.1 www.hulu.com
#127.0.0.1 news.ycombinator.com
#127.0.0.1 www.facebook.com
#127.0.0.1 www.youtube.com
#127.0.0.1 www.netflix.com
#127.0.0.1 mail.google.com
#127.0.0.1 www.reddit.com
127.0.0.1 www.techcrunch.com
Once I run the startwork script, sites are blocked by uncommenting the sites. There is no "startplay" script or "stop work" script, since I want to make it more painful to undo. To undo, you simply comment out the sites you want to visit.
It's been pretty effective so far. The mere fact of putting up barriers to the things that you don't want to do more of, and lowering barriers to those that you do want to do more of goes a long way.