Вы можете использовать подзапрос Критирия не существует ...
IList<Image> images = session.CreateCriteria<Image>("img")
.Add(Expression.Not(Subqueries.Exists(DetachedCriteria.For<ProductImageLink>("pil")
.SetProjection(Projections.Constant(1))
.Add(Expression.EqProperty("img.image_id", "pil.image_id")))))
.List<Image>();
Где ProductImageLink - таблица ассоциации.
Должен привести к запросу как ...
select ... from image img where not exists(select 1 from productimagelink pil where img.image_id = pil.image_id);