couple things wrong.
1) with express checkout, the billing and shipping details are returned to the pp_confirm page by the PayPal Express Checkout Get Payer Profile behavior.
the code for the get Payor profile behavior is at line 598 - 603, this comes after the code to set the session variables at lines which starts at line 68.
the get payor profile code needs to comer before the sessions are created.
2) For a number of the sessions, you are using the current page submit and form variable:
if(($_SERVER["REQUEST_METHOD"] == "POST") && (isset($_SERVER["HTTP_REFERER"]) && strpos(urldecode($_SERVER["HTTP_REFERER"]), urldecode($_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"])) > 0) && isset($_POST)) {
$_SESSION["eCartCheckoutForm_state_province"] = "".((isset($_POST["state_province"]))?$_POST["state_province"]:"") ."";
}
?>
there is no post from paypal, so these sessions wont work.
for others, they are properly set to use the paypal payor profile details, for example:
<?php
if (!session_id()) session_start();
if("" == "") {
$_SESSION["eCartCheckoutForm_shipping_phone"] = "".WA_PP_ECO_GetValue($WA_PP_ECO_GetResult, "Phone") ."";
}
?>
those ones will work.