Being a senior in high school who has been programming/interested in computer usage other than simply using programs for a number of years, I believe that many of the problems amount to teachers not showing the interesting side of programming and computer science. In my high school there were three computer programming classes, two that used pascal and one that used visual basic. I took the first one before taking classes at the local university, and my experience with it was that mixed in with the serious students the teacher had students who were taking the class only because they needed an "arts" credit and didn't care. Thus, he never went into the details surrounding what we were doing and rather just had us do assignments that we never elaborated on. Later on, though, I realized that the man had a wealth of information and interesting ideas when I came up to him to expand on what we were doing. However, it's hard to expect students who don't know they might be interested in something to come up to a teacher and ask for more challenges or another way to solve a problem so that they might learn more than they have. There were kids in that class that did eventually take the higher classes, but not having any advanced classes (and no self-motivation to ask to take college courses), their knowledge in programming and computer science died out. A greater tragedy is that now my school doesn't even offer the classes, so there would be no way for a student to find out they might be interested in programming.
Thus I believe the reason so few kids are programming is because they don't know they can, or they don't know anything about it and no one is doing anything to help them. Not every kid can sit at home and read dry 1000 page manuals, it's the school's job to give them an opportunity to be taught and learn something they might find they love.