prueba con esto:
$text = preg_replace('/\n/','<br />',$text);
aunque al parecer esta funcion que estas usando esta bien, recuerda que a la hora de guardar en la base de datos lo guardas normal y despues es que aplicas nl2br es un poco extraño que no te salga.
te dejo una liga donde tienen esa discusion:
http://www.forosdelweb.com/f18/que-p...xtarea-437978/
Lo que hace esta función nl2br es reemplazar el caracter #13 por el tag HTML <br />