There are quite a few possibilities, and ultimately this kind of question has a lot to do with "taste." I do think that scheme is a really good choice though, for a couple of reasons. One is that it is a very minimalist language, with very little in the way of syntax to complicate things. Another is that I feel like scheme expresses something really fundamental about computation, and does so very clearly. Another is that Scheme can be used in a very "multi-paradigmatic" fashion. You can do functional programming in Scheme, or imperative programming. It's also really easy to build an object system from scratch for Scheme- you can graft a simple one onto the language in less than 100 lines of code. There are also some Scheme implementations out there that have a lot of libraries, so you can do things like graphics programming or web programming in it.
And finally a great deal of attention has been devoted to developing good pedagogical materials in Scheme. "The Structure and Interpretation of Computer Programs" is justly considered a classic, but a lot of the material in it would be pretty tough for young children, I think (it was targeted at incoming freshmen at MIT.) But there are also much gentler materials, like "How to Design Programs": http://www.htdp.org/ One thing you can see really clearly in htdp is how the minimal syntax of Scheme allows you to get right to the important ideas.
The main downside to Scheme as a first language is that most of the languages that are really widely used these days don't look much like Scheme, so students might have a bit of an adjustment in store when moving to them. But I tend to think that, particularly for kids, getting the core ideas is the most important thing at first.