As far as I am concerned, this thread seems solved if you attend to the following steps (all covered somewhere above). Please let me know if anyone disagrees:
1) Make sure session_start() is called before ANY other information is sent. Place it before any includes.
2) If this doesn't work, create a stripped down test file and test it again. If the stripped down test file does not work, try changing to a different encoding. In my environment "UTF-8 With BOM" DOES NOT WORK, while either "UTF-8 without BOM" or ANSI works fine.
3) If there is some reason (I can't think of one) to output something before calling session_start(), you might try putting ob_start() at the beginning of the file and ob_flush() at the end. This buffers the output and may allow session_start() to work -- but this is more of a work-around than a solution.
4) Using @session_start() does not solve the problem. It simply supresses the warnings so that you don't see them.
Does this solve the problem to everyone's satisfaction ?