ti serve un database geoip. Se lo vuoi piu' completo, prendi quello della maxmind, commerciale, mi pare si chiami geoip city. Ce ne sono anche di gratis, tipo hostip.info o altri.
Una volta ottenuto il db, ti basta confrontare l'ip del visitatore con i dati, cosi risali alla sua citta, e a quelle vicine.
Tieni solo presente che risalire dall'ip alla citta' non puo' essere mai accurato al 100%.