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.