A razão pela qual isso não funciona é que o MySQL não permite que você faça referência à tabela que você está atualizando (cancome) dentro de uma subconsulta.
No entanto, isso pode ser superado usando uma consulta em vez da própria tabela no FROM, que tem o efeito de copiar os valores da tabela solicitada em vez de fazer referência à que você está atualizando.
Então, efetivamente, isso, mesmo que contra intuitivo, funcionará:
DELETE FROM cancome WHERE user_id IN
( SELECT user_id FROM (SELECT * FROM cancome) AS cancomesub
GROUP BY user_id HAVING COUNT(user_id)>3 )
limit 3