We use both IPN and PDT.
We do it a bit differently than the books states though.
We ONLY process orders via the IPN. So when auto return (with PDT enabled) redirects the user back to the site, we query the db for the order based on the txn_id (passed as tx for pdt). If the IPN has been hit and the order is available, then we show it. If it is not there yet, we do a meta refresh every 5 seconds with a message "searching for order". If no order is found after 30 seconds, we give them a "processing" message and tell them to wait for the email.
The real way to do it would be to enable order processing via pdt and ipn, whichever gets called first enters/processes the order, but I find our way to be fine.
---
Shannon @
PayLoadz.comSell Downloads - eBooks, Videos, Music, Documents, and more...