The problem is that the newlines are there. If you log into MySQL and look at your data, you'll see the newlines (a literal new line, not the code). If you look at the source of your html file, you'll see that the newlines are there also. But, HTML doesn't render newlines, only breaks (<BR>), so it looks like the newlines are being ignored. The nl2br() function tries to help by adding in <BR> where there are newlines. Unless it's been changed in the latest version of PHP (haven't checked lately) the newline are still there with the <BR> added in. It should appear correct when viewed in a browser...
Hope that helps explain what's going on...
---John Holmes...