Creo que tienes que usar un RIGHT JOIN en vez de INNER JOIN.
INNER JOIN une todos los registros de la tabla "usuario" que se corresponden con otros registros de la tabla "ventas" (es decir, cuando usuario.id = ventas.id).
RIGHT JOIN hace lo mismo que INNER JOIN pero además selecciona los registros de la tabla derecha (usuario), que no se corresponden con ningún registro de la tabla "ventas" (es decir, los usuarios que no tienen ninguna venta). Las columnas restantes son rellenadas con NULL.
Como COUNT solamente cuenta los valores no nulos, COUNT(ventas.id) debería devolver cero en aquellos usuarios que no tienen ventas asociadas.
Código SQL:
Ver originalSELECT usuario.*,
COUNT(ventas.id) FROM ventas
RIGHT JOIN usuario
ON ventas.id = usuario.id
GROUP BY usuario.id
PD: El GROUP BY debe ser en base a usuario.id, no en base a ventas.id.
PD2: En los INNER JOIN se puede usar tanto WHERE como ON para emparejar las tablas, pero en los RIGHT/LEFT JOIN debes usar ON obligatoriamente.