Plurality voting, in fact, will tend to have multiple equilibria — if you're not used to game theory, it's worth remembering that "equilibrium" in this context essentially means "self-fulfilling beliefs". In this context, if everyone believes a candidate has no chance of winning, nobody will "waste their vote" on that candidate, and so the candidate has no chance of winning, just as was predicted. In the case of approval voting, giving that candidate a vote, in addition to whichever other candidate(s) might have received your vote, costs you nothing, and, if the candidate is in fact fairly popular, the "equilibrium" in which that candidate was not viable is destroyed; it is no longer self-fulfilling.
The fragility problem, then, is whether almost equilibrium beliefs result in almost equilibrium behavior. Approval voting (generally) has equilibria that are fairly stable, to the point where I think it's frequently reasonable to imagine that voters would know what the final vote totals will look like with enough precision to behave in a way that produces the nearby (and typically in some sense optimal) equilibrium. I have previously suggested that, in other contexts, that information can be made public through a continuous voting mechanism, provided it is feasible to allow people to vote and then later change those votes.
In some contexts it may not be feasible, and I propose the following mechanism, making explicit (as I often don't, but should always be implicit) that this blog is a brain-stormy sort of place, and I'm not going to apologize for a refusal to defend this proposal in some other venue in the future. So long as some reasonably sized set of agents is able to participate on a continuous basis ahead of time, it only requires that all of the voters participate once, at the end:
- Create a "prediction market" in which participants trade contracts, one for each candidate, that provide a fixed payout after the election if that candidate finishes first or second in vote totals.
- Some reasonably manipulation-proof means is used to construct a final indicative price pi for each candidate very shortly before the vote is taken.
- Each voter casts a ballot consisting of one real number ui for each candidate.
- wi=pi(ui-∑j (pj/2) uj) and then vi=wi/√∑jwj2 are calculated for each voter.
- Add up the number of votes vi each candidate gets from each voter.
- Pay out the contracts, coronate the winner.
It's possible to recast this somewhat by effectively asking the voters for ai with a constraint on ∑i (aipi)2 and then adding up ai/pi, which is essentially vi if voters are optimizing in the way that seems right to me and believe that the pi are their best bet as to the probabilities of "viability"; this presentation has the advantage that the description I gave above is perhaps intuitively clearer, where you can see that voting for or against a candidate with a small value of pi is "cheaper" than for a candidate with a large pi. I prefer it the way I've given it in the numbered list, though, for the reason that I would prefer that the pi encapsulate the necessary strategic information but that voters never even have to take account of it. As I've presented it, provided that a voter's best assessment of the viabilities is the same as that reflected in the market prices, and provided there are enough voters that one voter (or perhaps a small conspiracy of voters) won't appreciably affect the "correct" values of pi, the voter's best strategy doesn't depend on knowing the values of pi; it only depends on the voter's preferences.
 As is often the case on this blog, one of the advantages of this proposal is that its drawbacks are fairly obvious; it fixes drawbacks that are important but hidden in other mechanisms. One point perhaps noting is that naive fixes can destroy important features of the solution as presented; if you find a context in which the relevant interests will allow data from a prediction market to be an input into the voting system, and you're worried about manipulation, I would particularly note that simply saying that an election will be re-run if a "nonviable" candidate wins is as likely to introduce bad behavior (by people who want to redo the election) as it is to eliminate it.
 Putting too high a floor on pi would make it more costly to vote for or against such a candidate, and could vitiate this feature. The result that I would like to avoid is that one of the "viable" candidates gets a lot of negative votes, most of your "nonviable" candidates get nearly zero votes, and thus your "nonviable" candidates beat the "viable" ones; in equilibrium, presumably the market participants would take account of this possibility, and would start to bid down all but perhaps one candidate — the presumptive winner — and bid up everyone else, in which case we're back in the situation where voters suffer from a great deal of strategic uncertainty.