Not only can portlets not share session data with other portlets, they can't even share session data between the exact same type of portlet if that portlet appears more than once on the same page (portlet instance, I guees).
However, JSR168 introduced something called APPLICATION_SCOPE for portlet session. With application scope, you can share session data between portlets that are part of the same portlet application (packaged in the same war)
This puts something into the session in one portlet, using APPLICATION_SCOPE
This pulls it out:
Note that APPLICATION_SCOPE is not the default.
I have a tutorial that demonstrates how APPLICATION_SCOPE works, and also have a completed JSR168 war file you can download and mess around with the code on your own.