I wouldn’t think that if you get a desync error the only option is to quit. Couldn’t you give the user the “Desync Detected” dialog box, but then allow them to choose a player whose version of the game state should be considered the correct one? Then you would wait a few minutes while the most-chosen player sends all players all state in their copy of the game, and then the game can resume from that state. It may frustrate the user to have a long pause in the middle of their game, but not as much as it would frustrate them to have all of their game progress so far lost.
You would choose a player to be considered to have the master copy by who is least likely to be cheating. In the case of a tie in votes, the player with the master copy could be chosen with a deterministic random number generator instead.