O endereço IP pode mudar no caso de clientes móveis ou clientes que alternam entre redes com e sem fio. Sua melhor aposta provavelmente seria fornecer um UID gerado aleatoriamente para cada cliente quando ele se conectar pela primeira vez (se ainda não tiver o cookie). Em seguida, você pode verificar se o mesmo nome de usuário não está se conectando usando dois UIDs diferentes.
O truque é que você precisa garantir o tempo limite desse UID, para que, se o usuário for para outro computador, ele não seja bloqueado. Talvez uma mudança no UID esteja correta, mas eles não podem voltar para um UID que já foi usado?