First, the guidelines of Microsoft about messages is really informative and helpful.
One example for a confirmation message, where several options are possible, is the duplicate file copying message (see below). See how each option is associated with its respectable consequences, and it's relatively easy to choose between them.
In general, allowing users to "recover" from the error without going back is good for usability (see also the "Save/Discard/Cancel" messages of closing an unsaved document). Making users go back to do something is very disturbing, as I personally saw in usability tests. I think it's because users need to remember what they need to fix, which loads their working memory. This is in addition to the frown of not being able to proceed. This is why it is encouraged to provide a "recovery option" (you may also adopt this name for the pattern).
An even better solution would be to prevent this kind of error in the first place. This can be achieved by providing the warning message inside the screen or form the produced it, before the "Continue" button was click. Another solution is inline validation.
Regarding the "too many options", I don't like any absolute rules. The only rule that is always true is "It depends". Three options might be OK, if they are not very complicated or overwhelming. Also, it depends how much patience your users have, and how critical is the operation.

On a side note, your unforgiving message is confusing, since it reads "cancel to abort", which might be interpreted as "erase all my previous work, and abandon whatever I was doing", although you just meant "go back to previous screen and fix something".