For a session to initialize itself, it must send data with the HTTP header. The HTTP header is sent automatically by the server (so you don't need to worry about it), but PHP's session functions (and also the header() command and others) add data to the headers. But in order to add data to the headers, such calls must be made before any other data is sent to the browser. You may not even send a space or a blank line before you try to send a header.
This means that in your PHP script, you must have your session_start() command before any output (e.g. echo, print, etc.), and it must be contained in a block of code that begins at the first character of the first line of the file (that is, the first <? has to be at the very beginning of the file).
There are ways around this, namely output buffering (refer to the documentation), but I recommend that you just make sure you're following the rules and everything will work out.