rainborick - 7:21 pm on Dec 7, 2012 (gmt 0)
I did some work with PayPal a while ago and ran into something similar. I used an interstitial confirm/proceed-to-payment page to allow recording the essentials of the transaction before sending the user to PayPal for payment. Then I used the IPN notification to update the status of the transaction - completed or otherwise.
It does mean having some incomplete transactions in your database, but you can always include some clean-up code in the IPN callback script or anywhere routine maintenance is performed.