surely your second line doesnt actually do anything? the nl2br function will replace all the \n's with <br>'s, so if you attempt to replace the \n's in that string then there wont be any (they'll already have been converted to <br>'s.
I wonder would it be possible to do something using strtok() maybe? It's just an idea, but you could try something along these lines:
$token = strtok($comment, "\n");
$clean_comment = $token."<br>";
while ($token!="")
{
$token = strtok("\n");
if(trim($token)==""){}
else
$clean_comment = $clean_comment.$token."<br>";
}
echo $clean_comment;
i think that will let you add returns, but wont allow more than one at a time, which might be what you're after - remember of course that if you use <p> and </p>'s then you'll get a nicer "gap" between the lines.
Hope that helps - a nice little tricky one!