I empathize with not wanting to become cocky, but I feel like you're lying to yourself. I could see them as truths if we were talking about triathlon, but something intellectual and logical as programming? If you are able to reach the point where you find yourself enjoying programming, then I think there's good chances that it's only a matter of time - and rightly focused effort - until you are able to produce work of any level of quality, including the current level of the best programmer, and beyond. What sort of limitations make you think otherwise?
Project this onto math, and we all could be Ramanujan or Galois with the right investment of time, right? Of course not. People differ in level of intelligence, and this is a fact. Some programmers are just brilliant people - had they chosen math they would probably be professors churning out papers. Some others just don't have the mental skills required.
This isn't about race or gender or whatever - just innate difference between individuals.
"Intelligence" isn't some stat you train to make your spells do more damage. It's a complex mix of what you've learned, how you learn, and who's teaching you. "Intelligence" is just as hard to define as "consciousness".
In my experience, it's the capacity for holding abstraction in mind that determines how far up the hill a person can go. I don't think there is ever a time where you can't move uphill, but the effort required to move increases more the closer you get to saturating that capacity.
I see what you mean. This is about very complex structures and interactions.
But in fact, I believe with enough time you can get used to any level complexity and find your way through it. It is a bit like a big city: however complex it is (intertwined roads, subways, highways, etc.), if you live there long enough, you will get a precise mental model. Same with software projects: after some time, abstraction will not be those foreign short lived unstable concretions that you hold in your head and that vanish away if someone says hello. They will be good old friends and the sole invocation of their name will instantly call a lot of solid knowledge to the bar.
So in this line, I'd say clever guys are just faster and more agile (maybe both are the same thing). Above a certain level of tolerance to abstract thinking, anyone can understand and work on big complex projects, given enough time.
There is another difference between good and great developers, though. It is the "best path-finding skill". For instance, given enough time, I would probably be able to write a Python script solving most sudokus, but I fear I wouldn't find as elegant and straightforward a path as Norvig's. http://norvig.com/sudoku.html