There are at least two major problems with a two-party system.
First, this sort of a system penalizes people who have views that are outside the middle of the political spectrum. With only two parties, the two parties tend to try to move to the middle to capture the most possible voters. This means that the people farther out on the political spectrum don't really get represented.
Second, it becomes very hard to know what people are voting for in a two-party system. Let's say I vote for a Republican in the United States. Am I voting that way because I oppose abortion and gay marriage? Or am I voting that way because I want smaller government and lower taxes? Or am I voting that way because I want a strong military? With just two parties, it is hard to know why any given voter votes for a particular party. This means it is harder to know what the public really wants.