I thought that you were showing us TWO separate scripts. If this is one script then cruz610 is correct - you should only have one start_session() at the very beginning of your code. You need to have start_session() at the beginning of every script that is going to access/use session variables.
You have not responded to my first post above! It explains how to solve your problem. From looking at this code provided by you, I can see that the $pic variable is not being assigned a value at the very top of your script! See below:
// HERE I START THE MAIN SESSION
session_start();
$pic = "must assign something"; // What does $pic have as a value?
$_SESSION['pic_id'] = $pic; // Then assign it to save in a session
print $_SESSION["pic_id"];
.
.
.
The second part of your code you should have:
// HERE I TRY TO PULL THE INFO FROM THE SESSION SET AT THE TOP OF THE PAGE.
session_start(); // OK to have if this is a different script, otherwise remove
// echo $_SESSION['pic_id']; Don't display like this becaus it might not be set
$pic = IsSet($_SESSION['pic_id']) ? $_SESSION['pic_id'] : 'Default vale'; // Must assign $pic if this code is in a different script
echo $pic; // Will display session variable or your default value
// end grab
$con = mysql_connect("localhost","pinehead","") or die(mysql_error());
$db = mysql_select_db("pinehead",$con) or die(mysql_error());
echo $pic; // This must be assigned before using it
.
.
.
Please note that $_SESSION array was introduced in PHP 4.1. For an earlier version, you can use $HTTP_SESSION_VARS in exactly the same way (assuming that the track_vars configuration variable is enabled), but you will have to declare it as a global within any functions that refer to it.
For more info. on sessions, see:
http://us2.php.net/manual/en/ref.session.php
http://us2.php.net/manual/en/function.session-start.php