@Geafram: Exactly, the union has to blame for that. A teacher can't be fired (thanks to the union) so it doesn't matter how good or bad they are at teaching. I am not advocating less money for teachers, I am saying they would do a hell of a lot better job if they could be fired if they were poor teachers.
@Gunfighter: I agree about how hard it is to fire bad teachers:
My economics teacher, for example, skips school whenever its sunny and the temperature is between 20-25 degrees (Celsius).
Its gotten so bad that there is an oncall substitute teacher just for him. (no joke)
He has now been teaching at my school for 26 years and will be teaching economics again next year.
The problem with private schools, at least here in Canada, is you can pay for marks. In standardized tests, the public school averages are always on par with the private school averages (at least for here in Toronto), however the GPA scores in public schools are around .7

lower then the private schools. (The stats are according to my guidance counselor, so don't shoot me if they are a little off) So why on standardized tests are we scoring around the same as you privates, but on GPAs we are scoring lower? The fact is, when looking at private schools you don't look at how much kids are learning, your looking at marks. If, for example, School A has GPA average (over entire school) is 3.6 while School B has one of 2.9, then which school would you rather have your kid attend? Private schools only care about how high the marks of their kids get with some exceptions. IB schools, for example, are very good, having gone to one myself.
public school systems work if done properly.
Singapore's public school system has been ranked the best school system in the world according to standardized tests. However it costs less then 1/3 of the amount per student then American public schools. So clearly they have a cheaper better system implemented. And one of the reasons is the lack of unions in Singapore.