Я столкнулся с ситуацией, аналогичной описанной вами. То, как нам удалось это исправить, очень похоже на то, что вы сказали. Мы уделяем большое внимание документации и одобрению. Каждое (нетривиальное) изменение в коде должно быть задокументировано, протестировано и одобрено другим лицом, прежде чем это изменение сможет перейти в разработку. У нас также есть возможность использовать TFS для планирования сборок и контроля версий.
Если это слишком дорогой вариант для вас, я предлагаю создать программу, которая будет отправлять обновления, а также создать резервную копию папки, содержащей предыдущую версию. Если обновления вызывают проблему, откат будет так же прост, как переход к папке резервных копий и перенос предыдущей версии обратно в производственную среду.
Надеюсь, это поможет.