GANDHI the movie is, above all, meant for entertainment. However, the movie is historically correct save for a few exceptions; but it is clear why Richard Attenborough (GANDHI's director) has made these errors.
Gandhi gets so upset at South Africa's Apartheid laws over just one incident in a train. It is true that this event really happened but it is unclear why Gandhi got so angry and started his campaign in South Africa.
A weak point of the GANDHI is its inability to elaborate on major episodes. It moves across five decades of time, all fitted into three hours of film. Attenborough only shows the responders the most important things before quickly shuffling to another scene.
Throughout the whole movie, all the characters speak in English. It is true that Gandhi did speak this language when he lived in South Africa; and few of the Congressmen (particularly Jinnah) felt at home with the English language; but the Mahatma switched to talking in Hindi (the common language of Indians at the time) to identify himself with the peasants.
It seems that Mohandas Gandhi held popularity right through his whole life, but this is not true. GANDHI presents the hero of the movie as a superhuman; but not everyone in India was with him. His popularity was at an all time low, especially after he failed to convince the Round Table conference in London that Indian was ready for independence. It is likely that the march against the salt company ever happened; or if it did it was not as spectacular as shown in the film.
The two notorious fasts undertaken in the movie by Gandhi brought results immediately. Within days, Gandhi got what he asked for. Attenborough even made Gandhi look like a martyr; putting his own life in danger...