Probably one of the largest problems I regularly see with the Stack Exchange model is that most people asking questions don't really understand how the system works. Often questions never get an answer marked as being the answer, which isn't a big deal because the highest voted answer still gives meaningful feedback to anyone viewing the question.
The slightly more rare, but arguably worse situation is when an asker understands enough to mark an answers as the answer, but then goes away and someone else comes along and posts another much better answer. If the question is kind of on the fringe, it can take quite some time for the vote count to swing in favor of the new, better answer and the OP has long since left. This leaves a question in a less than desirable state where the inferior answer has both more votes and is marked as the accepted answer.
One possible solution to this would be to allow the accepted answerer to reassign the accepted answer to an answer they feel is better than their own. People that answer questions tend to be much more active on the site and have a vested interest in trying to make sure that we have the best possible answers to questions. Additionally, if the answer's answer has been marked as accepted, they clearly had a solid understanding of the question and the details needed for the solution, so it seems like they should be qualified to make changes to the accepted answer.
This came up in response to this question where the answer provided by Falcon Momot is head and shoulders above my own answer. As a work around, I've made mention of his answer in mine to make sure people take a look at it, but really, it is a much better answer for the Accepted Answer on that question, it just happened to come in 6 months late.