I will point to two reasons why the United States has a two party system.
First, the two party system came about because of America's electoral system. In the United States, we have what are called single-member districts with "first past the post" elections. In other words, each district elects only one representative -- the person who gets the most votes. This is as opposed to a proportional representation system in which smaller parties can get representation by winning a relatively small percentage of the vote in an election.
Second, the US electorate is relatively homongenous. Americans do not tend to separate themselves out into classes. They do not tend to think of themselves as being primarily from their state or region either. Finally, they do not look at themselves mainly in terms of their ethnicity. This takes away a few of the major reasons for smaller parties to form. America did not (because of this) form class-based parties (workers' parties, etc). It did not form regional parties. It did not form parties based on ethnicity. Instead, it formed parties that competed with one another across a broad array of issues. This tends to lead to "big tent" parties rather than single issue parties.