Ok, that was the net outcome. After some analysis, I found three small bugs in libaccountsservice, in how the state machine for is-loaded is advanced as data arrives from the bus.
I hope that the patches are clear enough. They fix the visibile part of the bug here.
Created attachment 57828 [details] [review]
UserManager: fix advancing seat loading state machine
Because the session proxy creating happened synchronously, seat
loading state was incremented, but nothing called load_seat_incrementally()
again, meaning that it never advanced to next step. Making it async
like the other operations fixes it.
Created attachment 57829 [details] [review]
ActUser: set loaded status even if an error occurs
Not doing so confuses the UserManager, which still considers the
user pending and blocks the emission of user-added/user-removed
Created attachment 57830 [details] [review]
ActUser: use -1 to indicate default DBus timeout
Passing 0 means 0 milliseconds, which is quite too short even on