Ранее уже задумывался над этой задачей. Были разные решения. Но вот решение от Яндекса кажется наиболее оптимальным. Правда еще не пробовал.

Как попробую отпишусь.

А пока ссылку оставлю на память http://api.yandex.ru/maps/jsbox/2.0/geolocation_ip