Linking Products to Users Via Categories
I'd imagine using JOINs rather than subqueries would be the first step to enhancing the speed of this thing.

Very rough example:

SELECT p.*
FROM product p
INNER JOIN products_categories pc ON p.product_id = pc.product_id
INNER JOIN public.users_categories c ON pc.category_id = c.category_id
WHERE p.disabled = False AND c.user_id = 'some-user-id'


Not gone into a lot of detail there - one of more of your JOINs might need to be an OUTER.