Several years experience designing and developing mid to large scale business applications, coupled with a willingness and very strong ability to understand the underlying business concept(s) for the technologies that they create.
Every developer "can" do this if they so choose, but many wont because, in my experience, many people in our industry often resist understanding customers and the overall business side of the house so. This may be for a variety of reasons, not the least of which may be the tremendous pressure to learn everything there is to know about technology and to keep up.
I will answer your question by slightly modifying it. Can all good programmers become good architects? No! There is no guarantee. While there are some commonalities between the two, both require different ways of thinking. Someone who is able to write a sorting algorithm which is 10 times faster than all the existing ones "may" not have a remote idea about good architecture (in some cases at least).
On the other hand getting an Architect's job after x years of experience as a programmer is something most of good programmers can do.
Have you ever thought of the flip side of the question ?
Can one become an architect without having first been a programmer ?
IMHO, not all programmers have it in them to become architects. Some get better at their art, others don't. It exists in all professions - not all Doctors can become brain surgeons. And, not all architects go on to become Directors ;-)
Every person will rise to his level of incompetence and that is where career growth (hopefully) will stop.