I am also having problem with the IPN not verifying. It works perfectly the first time, I've found that if there is already a past order from the same customer in the database, the invoice number is not passed to PayPal and the IPN doesn't work.
I've tested this with several customer accounts. Every time is the same thing, the first time I place an order with that customer account it works, but the second, third, fourth, etc.. order does not go through and gets stuck at "Preparing [PayPal IPN]"
Even after deleting the order from the database and creating a new one it still doesn't work.
I'm new to OsCommerce and PHP so I'm having a hell of a time figuring out how to fix this...must be some kind of bug.