I've just experienced this on one of my production installs. After putting in my admin credentials, I got the "welcome admin" message with the continue button, after pressing continue, I was back on as the guest user, with no admin menu of course.
By chance I had debug on and this was in the output:
[3] => select user_id from `donnoman`.cpg140_sessions where session_id=md5("20f0bb6347f64b4482f2123284323b068a04d82f9b0dc62909efe1f571a0f90e"); (0s)
[4] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('e824fa8a74aa2c1a449323dc049b245c8a04d82f9b0dc62909efe1f571a0f90e') (0s)
[5] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('474cf106f8a4eb1043fe1825fff527a58a04d82f9b0dc62909efe1f571a0f90e') (0s)
[6] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('7f6bc361c0965f3acfd364e9a3001dfd8a04d82f9b0dc62909efe1f571a0f90e') (0s)
[7] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('ef5f138da874255347499aa6c763eab28a04d82f9b0dc62909efe1f571a0f90e') (0s)
[8] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('975b75721836983974aa95a3df5174f08a04d82f9b0dc62909efe1f571a0f90e') (0s)
[9] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('7172d4f49bd349d54053045ddcbf52918a04d82f9b0dc62909efe1f571a0f90e') (0s)
[10] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('1859bcac33e2f5c5cf5eb1a88b68d98d8a04d82f9b0dc62909efe1f571a0f90e') (0s)
[11] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('28b4231ba28203d397488a9af178c1508a04d82f9b0dc62909efe1f571a0f90e') (0s)
[12] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('3dde9a4fc2fd0b80a1a0bb1e73d699438a04d82f9b0dc62909efe1f571a0f90e') (0s)
[13] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('426e93b517133b9c4ef9c71862233e8b8a04d82f9b0dc62909efe1f571a0f90e') (0s)
[14] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('b03bb92779f5a8eb6d4b895dbfe1638a8a04d82f9b0dc62909efe1f571a0f90e') (0s)
[15] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('3648e2540941f2066e0f588ce45739e68a04d82f9b0dc62909efe1f571a0f90e') (0s)
[16] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('c86958f65eb7e6b54a085ac5198ac7b08a04d82f9b0dc62909efe1f571a0f90e') (0s)
[17] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('5b61f52f1b2b08a225c7e8472e685d228a04d82f9b0dc62909efe1f571a0f90e') (0s)
[18] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('da45ce382a81bfbc27c20c2231bd55be8a04d82f9b0dc62909efe1f571a0f90e') (0s)
[19] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('119099b147d0fcc75ec472e8ca7917648a04d82f9b0dc62909efe1f571a0f90e') (0s)
[20] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('547145591b5e5f1b98ffd5dbe891e89d8a04d82f9b0dc62909efe1f571a0f90e') (0s)
[21] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('36315187202a3fe349c83477087545908a04d82f9b0dc62909efe1f571a0f90e') (0s)
[22] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('a42a373b7af0072424b6086e977c4f548a04d82f9b0dc62909efe1f571a0f90e') (0s)
[23] => SELECT session_id FROM `donnoman`.cpg140_sessions WHERE session_id=MD5('b5c8617eabc4cf194bf506012a7a72588a04d82f9b0dc62909efe1f571a0f90e') (0s)
[24] => insert into `donnoman`.cpg140_sessions (session_id, user_id, time, remember) values ("f210689b20ca959398f66ac775853cab", 0, "1133104726", 0); (0s)
What I discovered with phpmyadmin is that the session_id field was a varchar 11 or 13 I don't remember which, which is way too small to hold the session_id.
I dropped the sessions table, re-ran update.php and then was able to login normally. I have no idea how the sessions_id field ended up so small. I wen't back through the CVS history, and when it was added session_id was a varchar 40.