La query

SELECT id_user, username, IP, MAX(visit) FROM visite GROUP BY id_user ORDER BY username

prima raggruppa gli id_user e poi per ognuno trova il massimo valore nell'attribuito visit.
Però gli altri due attributi (username e IP) possono essere non corretti perchè ambigui.
Supponi ad esempio di avere i seguenti dati:

id_user, username, IP, visit
1, pippo, 123, 123456
1, totol, 456, 123456

Avresti due record corrispondenti al max(visit), però con valori di username e IP diversi.
Come può fare la scelta il db? Non sa che username e id_user sono legati, questo lo sai solo tu.
Dovresti fare 2 query, con la prima ti trovi l'id_user e con la seconda username e IP in base all'id trovato.
Oppure con una sola query con un join tra la tabella e se stessa.