Alex Gilady said on Friday that in the third round of voting, with Moscow and New York already out and only London, Paris and Madrid remaining in the race, one of his fellow IOC members asked to recast his ballot but was told it was too late.
"Apparently, he forgot who he voted for and wanted to change his vote," Gilady said.
The Israeli did not reveal the name of the IOC member in question, but Britain's Press Association identified him as Lambis Nikolaou, a Greek delegate.
"These votes eventually always come down to a single vote. It is a bitter battle, and it has a lot to do with luck, and this time had to do with someone's stupidity," Gilady said.
Gilady said the delegate had wanted to vote for Madrid instead of Paris.
That, he said, might have allowed Madrid to stay in the race for a final round, and possibly beat London.
In the end, London beat Paris 54-50 for right to host the 2012 Olympics.
"These votes eventually always come down to a single vote. It is a bitter battle, and it has a lot to do with luck, and this time had to do with someone's stupidity"
Alex Gilady, IOC member
Gilady said the delegate had promised Madrid his vote but mistakenly selected Paris instead.
Had he not done so, there would have been a head-to-head battle between the Spaniards and the French for the right to face the British in the final round.
In the third round, Paris got 33 votes to Madrid's 31. Changing the vote would have tied Paris and Madrid at 32 votes apiece.
Gilady predicted that had Madrid won the third round, it probably would have prevailed in the end because "all the Paris votes would have gone to Madrid against London".
Gilady, the Israeli member of the IOC's London 2012 Co-ordination Commission, said that once the final result was announced there was no going back.
He said crucial Olympic votes are often determined by simply being in the right place at the right time.