Puedes usar esta classe para tal fin:
IP to Country
http://www.phpclasses.org/browse/package/1477.html
La Base de datos (en ese caso un CVS en texto plano) sobre que IP's son otorgadas a que ISP's por paises son públicas y ahí mismo creo que dá el link hacia donde puedes conseguirlas.
Si usas google "IP contry PHP" verás más ejemplos ..
También tienes IP -> ciudad .. pero esas BD no són públicas (o no las he visto público .. sólo servicio de pago), para afinar mejor la localización de la conexión de tu cliente a PHP por su IP y rangos otorgados por ISP.
Un saludo,