You could probably do it with a nested Select like:
SELECT categories.catID, categories.catTITLE, link.galleryID, gallery.domainID, gallery.galleryIMG
FROM categories
INNER JOIN link ON categories.catID = link.catID
INNER JOIN (SELECT gallery.* FROM gallery ORDER BY Rand()) AS galleryRand ON link.galleryID = galleryRand.galleryID
WHERE gallery.domainID = 1 GROUP BY categories.catTITLE
But that isn't very efficient. It would probably make more sense to use a second recordset to get the random image after retrieving the category result.