I had a terrible time getting IPN working for a client an it wasn't until I found a comment on a buried post that the answer came to light.
While everything worked fine in the sandbox, when switched over to live, no orders would complete. The user would pay, but then be redirected to the cart which would still have the order in it and the order status would stay stuck at "In Checkout."
This problem was due to a nuance in the IPN interface for the paypal account. I needed to go into the Profile -> My selling tools and under Getting paid and managing my risk choose update next to Instant Payment Notifications.
By default the IPN system is turned off. I had to click "choose settings," then I entered my client's URL. I then selected "Receive IPN messages", then click save. Even though you have specified a URL, it still takes the URL from the transaction specified by Ubercart
This isn't found in Ubercart's documentation so I thought I would document it here and, as always, if you need help integrating Ubercart, Drupal Development, web hosting, or anything else, let us know.