I recently went on a vacation to the Cayman Islands. One evening while there my wife wanted to watch Glee and found that it isn't possible due to some sort of restrictions only allowing streaming to the US. I took this on as a challenge.
One of the first things I noticed (thanks Firefox+live headers plugin) when hitting a page on hulu was requests to releasegeo.hulu.com/geoCheck. This does what I assume to be a geoip lookup to determine if you are in the US. Additionally it seems to do a proxy check. The response I was getting in the Caymans looked like this:
From a server in the US I received:
I figured this would be easy enough to forge. I needed two things a DNS server and a web server. I'll assume you know how to set those up and the rest is pretty simple. Setup a vhost for releasegeo.hulu.com on your web server with a file called geoCheck in your doc root. This file should contain the appropriate value above. Then setup your DNS server to have an entry for releasegeo.hulu.com and point it to your web server. Then setup the DNS server as such on your local machine. This should direct requests from your local machine to the phony releasegeo.hulu.com site you setup. You should be able to test this using normal unix tools like dig and curl. Note that adjusting your hosts file will not work in this case as many browsers use system calls to do DNS lookups bypassing the hosts file.
Admittedly this isn't a fool proof way to get Hulu outside of the US. It seemed to be a bit finicky due to DNS browser and system caches but after a little playing around with it my wife did indeed get to watch her Glee that night.