Hello thewomb,
First of all, why are you storing your session_id in the session variables?
$cartid = session_id();
$_SESSION["cartid"] = $cartid;
I think this is completely innecesary because you can retrieve the session id at anytime with session_id() once the session is started.
Then, i've never used session_register(), i just use
$_SESSION["bodycolour"] = $sel_body_color;
to define session variables and it works fine.
Are you running this script on your PC or a remote server?
If you are running it on your PC, make sure the PHP engine has WRITE access to the 'sessiondata' folder in your PHP directory (or whatever defined in your php.ini file).
This might also help:
http://www.phpfreaks.com/tutorials/41/0.php