> It appears to me there is something intrinsic or developed at a very young age which sets a mind up to be both able and willing to think like a programmer.
I think it's an almost intuitive and deep understanding of cause and effect; without this basic understanding, you can't get very far. That is, IF-THEN-ELSE branch logic.
Understanding this - which most people do every day, but don't do it in a concrete, thinking-it-through-before-doing-it fashion. Doing it is one thing, being able to describe and write down the process of steps is a completely other thing. I think those who have this early have an advantage in learning programming quicker than others.
Some I would say have this - but for some reason or another never learn programming, or pick it up much later in life. When they do, though, they tend to advance and come up to speed extremely quickly.
This might be the initial skill to discuss and teach. Ask them how they would make a peanut butter and jelly sandwich (or any other basic task of that nature - how to tie your shoes is another one); there's a surprising number of steps in the logic, and most people don't think about it when they do it - they just do it.
Interestingly - for instance - in cooking there's a term called "mise en place", which is a French culinary term meaning "everything in it's place". In short, it is a method of first gathering all of your ingredients, pre-measuring them, ordering them in the order for the recipe, then using them in the proper order. It's a means of both simplifying cooking and making sure you have everything, so your not all over the kitchen, and such.
This is equivalent to "initializing variables" (it makes me wonder if those who are "natural cooks" also wouldn't make good coders? Then again, I suck at cooking...) - so for instance in the case of a PB&J you'd "get the PB, get the jelly, get the bread, get the knife, open PB, open jelly" as the "mise en place" of the "making PB&J sandwich" process.
Then - show how to diagram (process flow diagram, aka flowchart) the process (just use the basic symbols: boxes, diamonds, and circles). This too can reinforce and show visually the process and how the steps relate.
Finally - as far as what to teach - I'd personally start with LOGO. It's a proven beginner's language, which is actually quite sophisticated and complex the deeper you get into it. If your student is visual, the ability of LOGO to show "turtle graphics" can be an interesting motivator. It's simple enough to grasp the basics immediately, but complex enough to learn the majority of basics in software development.
From there, you'd probably want to move on to Python.