hai due modi ... o usi l'ip però devi utilizzare dei servizi esterni o scaricare le associazioni paese/ip da questi servizi e gestirli in locale ... o più semplicemente nel tuo caso leggi la lingua che il browser ti richiede per i contenuti presente dentro $_SERVER['HTTP_ACCEPT_LANGUAGE']

Un esempio di firefox è
it-it,it;q=0.8,en-us;q=0.5,en;q=0.3

internet explorer 7 e 6 danno
it

opera restituisce
it-IT,it;q=0.9,en;q=0.8


Se apri il file
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

e scendi al paragrafo 14.4 c'è spiegato come funziona l'header Accept Language, che è quello dentro la variabile di sopra!

Nel tuo caso, comunque, ti basta fare un semplice
codice:
list($language) = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$language = strtolower($language);
if ($language == 'it' || $language == 'it-it')
{
  echo 'Utente italiano!';
}
Considera che un utente italiano difficilmente tiene il browser settato in un altra lingua, però non puoi averne la matematica certezza

Alternativamente se ti serve maggiore sicurezza devi usare
http://www.maxmind.com/app/geolitecountry