Impossible. Completely impossible.
For dial-up users ( still like 70% of the net I think ), their IP ( $_SERVER['REMOTE_ADDR'] usually changes everytime they reconnect to the web.
$_SERVER['HTTP_USER_AGENT'] is not permenent in that browser upgrades, add-ons ( Google Search Toolbar, Yahoo Search Toolbar, etc. ) change the HTTP_USER_AGENT variable.
Cookies are your best bet. Nothing else comes even close.
Sessions are passed only by Cookies or the URL, so they dont' help you in this instance.