||Scratch||Free, cross platform (also Web browser version).
Good starting environment especially for younger children, I would estimate most kids 8-9 years old could start and probably smart 7 year olds.
Programming is all drag-n-drop but has a reasonable set of control structures (loops, ifs) and a good event based model.
There’s a new release which runs entirely in a web browser which is great.
|SmallBasic||Free, Windows only.
Created in 2008, a simple Basic environment for .NET, I tried it very briefly when it first came out and was a little disappointed, however its been improved since then and they’ve put a lot of work into it.
One great feature is that once the kids have outgrown SmallBasic they can take their project and upgrade it and then take it further with the full VisualBasic.NET environment (the Express edition is free too).
Microsoft also has some great beginning programming videos and tutorials, overall highly recommended.
|GameMaker||Not strictly targeted at kids but I think it would make a good next step after Scratch. Again no hand-writing of scripts its all drag-n-drop and dialogs but much more fully featured than Scratch (and hence more complicated).|
|PyGame and Python||For somewhat older kids I think you could get useful stuff done with a generic programming language (like Python).
Add in a library like PyGame and you’ve got a pretty good basis.
||Kudo||Free: Windows and XBox
Microsoft Research visual coding environment, my 9 year old enjoyed using this. Emphasizes the fun aspect.
Also check out the excellent Microsoft Kid’s Corner in their beginners development center.
||Khan Academy||Free: Cross platform (browser based).
A bit dry for the younger kids.