@armatita described the best reason in that most of the United States is a plurality First Past the Post voting system, meaning that the first person to receive a bulk of the vote is declared a winner (even if it's not 50%. It can be 40% assuming that the other candidates received 30% and 30%). Maine recently adopted an Instant Runoff Voting schedule that could be corrective of this problem.
Winner Takes all only applies in the Presidential races as all but two states (Maine and Nebraska) allocate all Electoral College votes to the winner of the race of that state (In Nebraska and Maine, each congressional district assigns its single vote to the winner of that district (3 votes out of 5 and 2 votes out of 4 respectively) with the remaining two votes in each state going to the person who takes the overall popular vote of the state.). While this is somewhat of a barrier, the real problem is first past the post.
The Instant Run Off election operates in that rather than choosing a single candidate to support, voters are asked to rate their candidate in order of preference to winning (assuming Republican, Democrat, Libertarian, and Green, a 1 would be your preferred candidate, 4 would be least preferred. It could also be that if you are Never-X, than you need not assign a vote.). At ballot counting time, the candidates go through a series of elimination rounds. The person who was selected for the least amount of 1 votes is dropped and all of that candidates votes are reassigned to the second pick. In the next round, the weakest vote count of the remaining three candidates is dropped and their votes are reassigned to the next still remaining candidates.
There is one caveat to this in that, this happens until we eliminate down to two candidates OR a candidate who receives 51% or more of the total vote occurs prior to all elimination. This will benefit the smaller parties by allowing voters to feel safer voting for them rather than picking a terrible, but more viable candidate to block an even worse candidate.
Ideologically speaking, the Green party is somewhat of a single issue party, in that they really only are united in politics related to enviromentalism, and generally have similar views on it as the Democrats... as such, their stance on a variety of issues is not well know, or not unique when compared to the Democrats, or downright too extreme even for some likely mainstream support (I am aware of some socialism support within the party, which has historically been an election killer in the U.S.)
The same is somewhat true with the Libertarian party, which tends to pull a coalition of fiscal conservatives and social liberals into it's base, but again, these are issues that both the Republican party and Democrat Party do well in respectively as well, so hard core fiscal conservatives and hard core social liberals tend to break for the two mainstream party. The modern Libertarian Party mostly tends to be a "Diet Republican" party, which mostly means they don't campaign for Christian Right votes.