Ok, yo siempre he usado esto:
http://www.maxmind.com/app/ip-location
mira la sección "Free / Open Source" -> "GeoLite City", para ser gratis está excelente.
Cita: Over 99.5% on a country level and 79% on a city level for the US within a 25 mile radius.
Saludos!