I am (slowly) working on a project that deals with this sort of problems. Idea is to abstract session management a bit and allow users/application to refer to it using business keys instead of internal session identifier. So, for instance a business key could be user id, that interacts with the engine, that would give you easy access to all processes and other session data without maintaining mapping between session and process instance. Of course it will not cover all possible usage scenarios but I believe it will make it bit simpler (and take process instance <-> session management out of application developer shoulders).
Comments more than welcome
Have you found any solutions already for mapping busssiness attributes to ksession id ? Something you have checked and it works for you ?