Hola,
Posiblemente podrías usar algo así:
Código:
SELECT
a.idtipo,
a.tipo,
COUNT(b.idpro) AS cuentaProducto
FROM
tipoproducto a LEFT JOIN productos b ON a.idtipo = b.idtipo
WHERE
...
GROUP BY
a.idtipo, a.tipo
En el caso de MySQL no es obligatorio colocar todos los campos en el GROUP BY, solamente a.idtipo ¿?

, en este caso te va a mostrar todos los tipos de productos aunque no tengan productos; por el left join, y en cuentaProducto va a ser 0 o null.
Saludos,