First, the ~てしまう construction can convey a sense of regret, which the 切る verb suffix cannot:
花瓶を落として割ってしまった。 I dropped the vase and [regrettably] broke it.
花瓶を落として割り切った。 (unnatural)
When used in constructions expressing the completion or finishing of an action, 切る tends to sound best with actions that can be measured on a scale, but there's a lot of overlap:
使い切る use up (使ってしまう could work)
乗り切る completely overcome (乗ってしまう sounds unnatural)
冷え切る cool off entirely (冷えてしまう could work)
疲れ切る become exhausted (疲れてしまう could work)
出し切る put forth everything (出してしまう might work in some cases)
All of the verbs above imply the exhaustion of a finite quantity (使う, 疲れる, 出す) or a change that could stop at any point on an invisible scale (乗る, 冷える). This aspect is reflected in the fact that the generic verb for "run out" is 切れる:
ノートパソコンの電池が切れた。 My laptop's battery died.
おい、この納豆の賞味期限が切れているよ。 Hey, this nattō's past its expiration date, you know.
On the other hand, for actions that don't fit into a nice scale (i.e. they either happen or they don't), the ~てしまう form is usually better:
泣き出してしまう burst into tears (泣き出し切る sounds unnatural)
変わってしまう change completely (変わり切る might work in rare cases)
ほれてしまう fall head-over-heels in love (ほれ切る sounds unnatural)
消えてしまう disappear entirely (消え切る might work in rare cases)