It seems like there are a whole pile of concerns mixed together in this method:
1. Lazily (i.e., on load of a page for each user) check for the presence of an associated wiki account and mark it as associated.
2. Control the display of the sidebar box or link to their user page.

IMHO, nothing to do with #2 should be in this method (it should be over in https://github.com/tricycle/lesswrong/pull/95/files#diff-760ec01bdf54d61192a927b07191d5aaR93 , say) because it is causing the object to tell fibs about its own state. It also means that the sidebar box must show either the link to a user page (and if the Account is "pretending" to be `'associated'`, it will show a broken link) or a form to create the wiki account (also wrong - the user needs to register their actual wiki name if we can't work it out). If `wiki_user_query(self.name) == 'undecidable'`, neither of these are correct - the sidebar box should be suppressed.

It seems like there are 3 sets of transitions going on here:

1. 'unknown' -> 'associated': we looked up the wiki username, found it was there and saved it.
2. 'unknown' -> 'unassociated': we looked up the wiki username, it wasn't there and saved it.
3. 'unknown' -> 'undecideable' -> 'waiting-confirmation': we have no idea what their username should be and asked them. What if the user doesn't have an email address on their account?

Also: the variable name `exists` no longer describes what the variable actually does. Please change it.