Nick, you haven't posted your code, so it's hard to check.
When I pointed out the need for session_start() I should have been more explicit. It must be called on every page, not just the originating page.
Test the following code on your machine.
session.php:
<?
$foo='Doo Dah';
session_register('foo');
?>
<a href="session2.php?<?=SID?>">Click me</a>
session2.php:
<?
session_start();
echo "Foo is $foo";
?>
When you click on the link, you should see
Foo is Doo Dah
If this does not work, then the next step is to examine your php.ini file. Make sure the temp directory exists and is writable by the Web server.
By the way, you do NOT have to echo the SID in the URL if you don't care about the tiny percentage of users who have disabled cookies, and the SID constant will be empty if you have enabled cookies.