Когда я слышу этот фразеологизм, сразу почему-то вспоминаю песню Игоря Саруханова. Там то ли "скрипка-лиса", то ли "скрип колеса". Так и здесь: кто-то говорит "скрепя сердце", а кто-то - "скрипя сердцем". А правильно как? Скрипеть или скрепить? Правильно - "скрепя сердце". Мы путаемся потому, что деепричастие "скрепя" стало устаревшим и самостоятельно давно уже не употребляется. Да и по нормам русского языка правильнее будет "скрепив". Но в составе фразеологизма слова остаются неизменными. Есть еще церковное слово "окропя" - кровный "брат"нашего деепричастия...
При принятии сложного решения часто кажется, что тело так напряжено, что вот-вот издаст звук — и мы услышим скрип сердца, например. Но к устойчивым выражениям это отношения не имеет. Сердце скрепляют, делают крепче, чтобы решиться на поступок, совершать который иногда совсем не хочется...