We had to tackle all these kinds of things when building the Q framework. You can see the result at http://qbix.com login
Consider this ... what if on a public computer, User X is still logged in with Facebook, and User Y is logged in with Twitter. In the past, both used Facebook, Twitter respectively to auth with our service. Now, which user should be logged in?
Or consider that the user could have logged out of facebook and another user logged in, while our site was in the background. The user comes back to the site, and what should we show?
Well, we show this:
http://cl.ly/image/281I2T2H0W33
http://cl.ly/image/1C1l0A2n1U3V
Our framework notices stuff like this and just "does the right thing"