This is a frequently asked question in politics and economics. From my studies it seems that most of the experts point to the election rules here in the United States as favoring a two-party system. From an economics perspective, given the current rules, the two-party system is more efficient.
However if the rules were changed it would be conceivable that we could have 3 or more parties and that it would be more efficient as well.
One solution, although it is imperfect, is the run-off election. Say you have a Republican, Democrat, and left leaning Independent. In a normal election with no run-offs. The left leaning independent will be discouraged from even running. The independent will often drop out of the race to prevent what is known as the "spoiler effect" which is a third party candidate taking votes away from similar major party candidates.
Some independent voters will also refrain from voting for an independent that runs because they are trying to prevent the Republican from winning via vote splitting. A runoff election allows the voter to pick whoever they want out of the 3 candidates and then select again in a run-off election without the fear of vote splitting. This encourages third party candidates to run and it also encourages third party voters to vote without the fear of the vote splitting or the "spoiler effect".