Estás agrupando primero y ordenando después. Prueba hacerlo al revés:
Cita: SELECT *
FROM `tabla`
WHERE id_usuario=100
ORDER BY fecha DESC
GROUP BY id_usuario
O mejor aún, agrupa una subconsulta. es más eficiente:
Cita: SELECT *
FROM (SELECT * FROM `tabla` WHERE id_usuario=100 ORDER BY fecha DESC) AS TABLA1
GROUP BY id_usuario