Possibly the reason we have a two-party political system is that it's easier for voters to choose between two people (representing the platforms from their parties) in a general election rather than three or four.
Often, a candidate represents their political party's platform. Usually that platform consists of several topics. Historically, third party candidates are one-issue candidates. Their party may focus on the environment (Green) or other agendas.
Also,third party candidates in a presidential election usually exist to shed light on an issue that may be ignored by the big two or is the result of a candidate from one of the major parties who felt they could win in a general election rather than in a primary.
Third parties do win, but they're in congressional/senatorial elections (such as Bernie Sanders or Leiberman).
Another thing to consider about the two-party system is that it's stable. Even if the candidates may not be appealing, they are often closer to the center of the political spectrum. In multiple party systems around the world (sometimes where more than 20 candidates are running for office), the candidates tend to be all over the political system. This can create chaos before, during and after elections.