The main reason is lack of facilities and knowledge and encouragement. In developed nations people can choose to do what they like at a very young age, and the governments and various institutes are fully supportive of them. Athletes can enjoy a decent lifestyle and sometimes even stardom.
In developing countries like India, sports is not even considered as a career option unless it is cricket. Children from middle class or lower income groups do not even get exposure to the sports they might be good at. National Hockey players are forced to use second class facilities and paid less than what BPO employees get. So forget training and nutrition, survival itself is a task for them.
There is talent everywhere. It was proven recently at the CWG when 4 or 5 cousins from the same village in India qualified for the respective events and even won medals (2 golds IIRC), because their father was supportive of them and trained them diligently for the games.