To avoid these hassles you have to spend a little more money to include a local manager to drive the outsourced team and be responsible for their delivery.
Honestly I get the sense that people who are happy with outsourced code are either unusually lucky to have found a highly skilled and responsive outsource, or more often they just not technical enough to judge the technical quality or the timeliness of what they are paying for. They are happy with the shiny car the outsourced team made and they can't realize the engine compartment is an absolute mess.