Você já viu o projeto NHibernate.Spatial ? Isso pode fornecer uma solução fácil para o seu problema.
A alternativa é criar sua própria implementação de
ICriterion
- isso não é muito complicado se você derivar de AbstractCriterion
e você segmenta sua plataforma de banco de dados específica. Isso permitiria combinar sua função de distância com outros critérios.