I don't think that's really true. I knew someone in college who had never touched a compiler before her sophomore-year intro CS course. She ended up graduating with high honors, went to work at MIT Lincoln Lab for a few years, and is now doing a Ph.D in CS.
I know several other people here at Google that went into college studying things completely different from CS, took a couple courses in it, and discovered they loved it.
I think the real determiner is what happens after college, after the academic support net is taken away. The people who go on to become really great programmers use it as a springboard to start seeking out information on their own. You can always tell whose these are once you hire them, because they'll ask you several questions about the system to orient themselves, get some code & documentation pointers from you, and then go about their merry business learning everything they can, including tons of stuff you didn't tell them (and often, didn't know yourself). The mediocre ones learn just enough to accomplish the task at hand and then ask you again as soon as they have to do something new.
I know several other people here at Google that went into college studying things completely different from CS, took a couple courses in it, and discovered they loved it.
I think the real determiner is what happens after college, after the academic support net is taken away. The people who go on to become really great programmers use it as a springboard to start seeking out information on their own. You can always tell whose these are once you hire them, because they'll ask you several questions about the system to orient themselves, get some code & documentation pointers from you, and then go about their merry business learning everything they can, including tons of stuff you didn't tell them (and often, didn't know yourself). The mediocre ones learn just enough to accomplish the task at hand and then ask you again as soon as they have to do something new.