Okay mate,
The problem for me was my payment gateway plugin. When the payment was successful it was updating the order status to completed, when it should really have been updating status to processing. Possibly it should be doing nothing at all in that regard.
Not sure about your paypal problem. I suggest trawling through the code for instances of the update_status function which is part of the order class. See where it’s updating to completed when maybe it shouldn’t be.