Reemplazar WHERE cláusula con HAVING , así:
SELECT o.ID , count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID
GROUP BY o.ID
HAVING count(p.CAT) > 3;
HAVING es similar a WHERE , es decir, ambos se usan para filtrar los registros resultantes pero HAVING se utiliza para filtrar datos agregados (cuando GROUP BY se utiliza).