A session facade hides who you're talking to. It's a way to take a complex conversation that might include N objects and changing it so a single request is made to the facade, which then orchestrates those N objects to fulfill the request.
A proxy also hides who you're talking to, but the main reason is to disguise the location of the callee. It's how RMI and CORBA work - they have your objects talk to a proxy stub, which handles all the complications of marshalling parameters and unmarshalling the response. From the point of view of the caller, it appears that the callee is in their memory address space. The remoteness of the callee is hidden.
%