Charter schools and voucher systems are a good first step towards improving the teaching of a state mandated curriculum. However, many market failures remain in such a system. While competition between a few schools offers students choice, the overhead of changing schools or selecting a school which is farther a field makes the market work poorly. Most importantly, student utility (eg. pain and effort to achieve a grade) has very little weight in the selection of teaching methods.
In reality, the operation of schools has little to do with the success of its students: after all managing a building and administrating personnel is a commodity. What matters is the teachers. So why not have charter teachers, all in the same building, rather than charter schools? If there is some overcapacity of teachers, then the worst ones as chosen by the students would end up out of business. This would give students much more choice in the compromise between attaining the highest grades vs. the effort they have to put in.
Knowing how good a teacher is before taking his class is quite difficult for a student, and repeat business is not really possible given that teachers specialize in one subject and grade level. So charter based teachers suffer from some of the same problems as charter schools: by the time students have enough information to choose a teacher, it's too late -- they are already committed.
A solution to this information problem is to force each student to cancel exactly one class per semester at any time prior to the final exam. The worst teacher as judged by the students will be financially penalized for each student that abandons his class. The very worst teachers would abandon teaching altogether.
Whatever system is chosen to improve education, the student's preference for effort vs. grades should be fully internalized.