Diciamo che GROUP BY preleva il primo record che soddisfa la condizione del raggruppamento. Il campo MAX(visit) diventa una colonna a se stante con il valore piu' alto di visit (cos'e' una data? unix timestamp?)

Quindi id_user e username si presumono siano univoci... cioe' che ad ogni username corrisponda un id_user che verrebbero quindi selezionati in ogni caso da group by, mentre altra storia e' per l'IP che sara' quello del primo record che soddisfa GROUP BY e non quello di MAX(visit). Oppure potrebbe anche esserlo, ma solo per questione di mera casualita' e non per la specifica richiesta .

Potesti provare ad aggiungere HAVING in modo da forzare la scelta sul record con piu' alto valore di visit... esempio da provare ovviamente...
codice:
SELECT id_user, username, 
IP, MAX(visit) AS last 
FROM visite 
GROUP BY id_user 
HAVING visit = MAX(visit)
ORDER BY username