Has there ever been a serious study which tries to determine at what age children are able to grasp programming constructs? (loops, functions, etc) We were all once little children and I know my own personal timeline, but I can't say I've ever seen a large collection of data points analyzed.
Not that I know of, but I would say that teaching "loops" and "functions" is almost definitely going to bog them down. Loops are not interesting on their own, but rather in terms of what you can do with them. So teaching them how to count (which is easy for children to grasp) is the proper beginning, followed by repetition (do something n times). They will learn loops, but only in terms of fulfilling a purpose. Things like functions come in later, as they are initially unnecessary. When they start to write the same lines of code over and over, you can point out the idea of reusing parts of code that get stuck in something called a function. Abstraction is thus quite easy to get them to understand (I speak only from experience, not a studied truth).
Basically, you teach them what they need in order to accomplish a specific task. Are arrays really useful to teach at first if they don't need serialized access to data? Better to wait until they need something like that. The goal is to give them problems that require those concepts and see if they ask for it. Initially, they might make 20 variables (where an array would do), and complain that it gets tiresome. Perfect opportunity to explain an array, while the interest is at a peak.
I haven't seen a serious study, but I've taught Scratch programming to kids in the 6-10 age range and found that they were all able to grasp loops if presented in an appropriate way. Similarly, we didn't talk about functions exactly, but each Sprite in a Scratch program can have multiple blocks of functionality triggered by different things.. i.e. functions. By the end of a year-long course, all of the students understood at least the basic idea and several of them had a pretty deep understanding.