In a text field it should show up the way it was entered with \n being invisible.
In html use nl2br().
If storing the text in the DB store it there in the way your user entered it and just use nl2br() for html - assume that any time you pull it out will be for a text area.
Thats pretty much the same thing Fou said but with a slightly different twist on the explanation.
My helpful sig is on vacation trying to loose some weight. It got a bit fat and caused a few problems but it will be back at some point!