If you want to set it up yourself, look into PowerDNS with the Geo backend. Google it for info/guides.
Note: I haven't tried doing this with PowerDNS myself, but I've thought about the same issue and PowerDNS is probably the cheapest & relatively easy solution. Afaiki Wikipedia uses (or used) it too.
Alternatively you could use some GeoIP lookup (through PHP for example) on your main site and redirect users to subdomains (ie: us.site.com, eu.site.com etc). That's not the prettiest solution though, but it saves you from setting up your own DNS servers.