Внешнее объединение выражается через QueryOver
следующим образом:
IQueryOver<Cat,Kitten> catQuery =
session.QueryOver<Cat>()
.Left.JoinQueryOver(c => c.Kittens)
.Where(k => k.Name == "Tiddles");
(из документов QueryOver на NHForge.org)
Итак, в вашем случае это будет:
var cats =
_nhibernateSession.QueryOver<Categories>()
.Left.JoinQueryOver(x => x.SearchCategory)
.Where (c => c.UserId == userId && c.IsDeleted = false );
Я опустил предложение group by, так как я не вижу никаких агрегированных столбцов в вашем выборе.(Хотя и не проверял запрос).