First, a caveat: I usually teach software design, and have only taught basic programming to maybe 150 to 200 students.
That said, I'm not a huge fan of visual devices in teaching basic program structures (like selection, loops, and variable manipulation) because the art of programming involves writing at its core. Doing that feels like I'm teaching somepony to write short stories by having them rearrange photographs of sentences. I want to show students how to write, and if the algorithms are very simple, the results are something all students can be taught to visualize and follow (provided they're around the sixth grade level or higher).
I have tried using the Alice visual programming language to teach young girls once or twice. I suppose the theme for the language (which is aimed at girls) is based upon a theory that girls will be more interested in programming if it looks less sterile, or some other nonsensical shot in the dark about why we fled the science decades ago when computers first became boy toys. I'd honestly rather have a lesson on syntax followed by very simple programs with output that students can play around with directly. Let them change things in an IDE that will catch syntax errors and see what happens that way. They need to think in terms of written descriptions eventually, why not start them out like that? Diagrams and pictures are important, but I prefer to save them for the lesson itself, or as a tool on paper to guide composition.
(For the record, I also have no idea how to get more of us interested in programming, but pandering to gender stereotypes ain't gonna be it.)