The biggest problem is that Android's Market is hard to grasp, as there is so much stuff in there and people can pretty much post anything anywhere. The Second Biggest Problem is that Apps never work well on all phones. And that's hardly something to blame the poor developers for. They can't have all phones. There are two approaches to fix this:
1. Improve the platform robustness: APIs should whenever possible work exactly the same on all devices so programmers need not reprogram their software for each device. That's the whole purpose basing them on Java in the first place.
2. Provide a testing platform: App developers should have access to a means of seeing how their apps work on different phones. One way would be a technical solution that runs the devices' firmwares in a Virtual Machine. Many bugs should be fixable this way. Another way would be the open source way: A group could be created where people with the same phone join groups and developers can post new applications. Then each group tests them and reports how they work on the real devices.