NHibernate es probablemente la opción correcta. La biblioteca es muy madura (actualmente v3), basada en Java Hibernate, que está ahí por más tiempo.
Depende. NHibernate está diseñado para escenarios OLTP. Eso significa que carga un pequeño trozo de datos, lo procesa y lo guarda de nuevo. La parte crítica es: "pequeño pedazo". Si se encuentra en cualquier screet similar a OLAP donde debe procesar por lotes grandes fragmentos, NH no es una buena opción. En tal situación, lo más probable es que no desee utilizar ningún ORM en absoluto. Como siempre: Herramienta correcta para el trabajo correcto.
Si su aplicación es una empresa típica como, usted estará contento con NH. La biblioteca es extremadamente flexible con muchas opciones de ajuste. También recuerde que todavía puede usar el antiguo ADO.NET en partes OLAP de su aplicación, si las hay.
Si tiene algún problema, la comunidad de NH es muy supportive además hay compañías y personas que ofrecen consultoría y soporte pago (en caso de que la política de su compañía lo requiera).
Uso NH durante 3 años y puedo recomendarlo: la herramienta hace su trabajo.