also:
($SESSION['old_user_agent'] != $SERVER['HTTP_USER_AGENT']
|| $SESSION['old_remote_addr'] != $SERVER['REMOTE_ADDR']){
you are setting not comparing, not sure if that is what you wanted.
I'm not quite sure how this would work so I'm curious as to what it's purpose is.
I see you are capturing user agents and storing them in sessions and comparing the two. Which would be useful if let's say someone logged out or had their time expire on a session, i would think, but making sure you destroy your session on loggout or expiration is probably the safest bet. Sessions are created for each user on the server, I think if a user can gain access to the server's cache you have a bigger security breach then a user sessions.
As far as remote access, i dont see anything that woudl enable the server to compare id's on 2 different machines, since you arent storing them in a db of any kind.