Hallo Christian
Es wird kaum ein Weg daran vorbeiführen, dass Du Serverseitig eine Sesion-ID generierst (aus getTime() ** Prozess-ID, dieser Wert ist mit sehr hoher Wahrscheinlichkeit eindeutig) und diese in irgendeiner Form im Client ablegst.
Wenn dabei Javascript und Cookies nicht in Frage kommen, kannst Du mit einem hidden-Formularfeld in jeder HTML-Seite die Sesion-ID von Seite zu Seite übertragen (oder im HTML-Dokument des Warenkorbes verstecken).
Dein Vorschlag von eine Kombination aus HTTP_ACCEPT, REMOTE_ADDR und HTTP_USER_AGENT ist vor allem bei Usern aus Firmennetzen untauglich, da dort mit Firewall/IP-Filtering gearbeitet wird und auf den einzelnen Rechnern Standardinstallationen aufgebaut werden, um die Systemadministration zu erleichtern.
Also bleibt wohl nur der komplizierte Weg über Sesion-ID oder so was ähnliches .. ;-(
Natürlich hoffe ich für Dich, dass ich mich irre... (aber eine andere Idee habe ich nicht).
Grüsse
Tom