If a signed-in customer purchases a virtual product only and chooses PayPal as their payment method, when they arrive at the PayPal "Choose a way to pay" page the only fields that are populated on the PayPal guest form are their email address and phone number.
The PayPal log associated with this sandbox transaction contains
which, I'm guessing, is the root of the problem.
Mar-28-2012 15:38:02 (1332941882)
cart contents is virtual and customer is logged in ... therefore options['NOSHIPPING']=1
Is there any way to get the signed-in customer's address entries populated at PayPal so that they don't have to re-enter all that information again if they choose to use the guest-mode checkout?
Here are my PayPal express settings in my admin:
I have made the change described in this post to my copy of paypalwpp.php.
Enable this Payment Module
Sort order of display.
Express Checkout Shortcut Button
Set Order Status
Reservation Confirmed 
Set Unpaid Order Status
Reservation Requested 
Set Refund Order Status
Reservation Cancelled 
Express Checkout: Require Confirmed Address
Express Checkout: Select Cheapest Shipping Automatically
Express Checkout: Skip Payment Page
Express Checkout: Automatic Account Creation
Store (Brand) Name at PayPal
PayPal Page Style
API Signature -- Username
API Signature -- Password
API Signature -- Signature Code
Live or Sandbox