You just forgot to join the image table id to the other tables id so you end up looking to see if there are any records in the tables rather than that specific id. You also don't need the 1=1 bit. It would also be more efficient to use not exists but if there isn't that much data it doesn't matter too much.
FROM Images i
WHERE NOT exists (SELECT 1 FROM cg_Cards c where c.idImages = i.idImages)
AND NOT exists (SELECT 1 FROM cg_Gifts g where g.idImages = i.idImages)
AND NOT exists (SELECT 1 FROM cg_Users u where u.idImages = i.idImages)