How do I change an incorrect contribution status to Completed?
To my knowledge: 

As far as the contribution hasn't exported to any sage or anything you are ok - you can directly change the contribution status against the DB which will be an easy fix. 

But if the transaction has been exported already then we shouldn't be change the status instead we should be creating an new transaction for the contact also mention the reason against the source which will help. 

I guess this helps!!!