The first and one of the biggest problems as I see it with US democracy is how bipartisan it is. The problem should be pretty obvious to anybody who has been following US politics lately and it seems to be getting worse at least from what I can see.
I don't see this problem going away anytime soon and unfortunately due to how US elections are done it is as far as I know uniquely designed to exacerbate this problem. The problem starts with that all elections in the US is winner takes all. That means that you really can only have two major parties because if someone started another significant party on either the left or the right that would immediately lead to that side consistently loosing all elections since that side's votes would be split two ways (I am reminded of the interview by Bill Maher on Realtime where he urged Ralph Nader not to run for President in the Bush-Kerry election in 2004).
This problem is made even made worse by how how the candidates are selected during the primaries. Not that a lot of people vote in the elections in general, but only a very tiny minority of people vote in the primaries which choose the candidates. Also the people who do tend to participate in primaries are usually the ones that lean very far to the left or the right. This means that instead of getting two people who are fairly close to what most people might be OK with in the middle of the political spectrum we tend to end up with two candidates each of which are far to the left or to the right. And given that the winner takes all a difference of a few votes could be the difference between a very left leaning candidate and a very right leaning candidate. And then when they all go to Washington these very right and left leaning candidates need to try to compromise and we all know how well that is working out.
One way that I think this could be made better is if you stopped having representatives that all represent one specific district for each state. Instead of having a congressman represent some weird selection of counties in his state he would represent the whole state. And the election for congress would not be several winner takes all races, it would be allotted based on how much each of the political parties have won in that state. A candidate could still run by himself as now, but instead of having individual elections for the state the parties would run in the elections with a list specifying the order of the candidates that they will field. You could also add in some sort of weighting where you as a voter can pick certain candidates that you prefer on the list and they would be able to skip up the list if enough people did so (As we do now in Sweden). This way a larger state like California you could have a party that only has 10% of the vote but they would still successfully field around 5 representatives in congress since California has 53 delegates. I'm not certain, but I'm pretty sure that it is up to the individual states how you elect your representatives so this change could even be enacted by individual states.
But since everybody currently elected belongs to one of the two dominant parties why would they change the law to make it easier for smaller parties to be heard?