British Transport Police said officers were called by paramedics to Marston Road level crossing near Lidlington, Bedfordshire, at 10:00 GMT.
The car had been hit by the Bedford to Bletchley London Midland Service. Eleven passengers and two members of staff were on board but no-one was injured.
Disruption on the line was expected until 15:00 GMT, Network Rail said.
Police said the death of the man, who was believed to be middle-aged, was not being treated as suspicious "at present".
"However officers continue to examine exactly how the car came to be on the tracks," a spokesman said.
Live: Follow updates on this story as they happen
One of the passengers on board the train, Kieran Sargent, said he "heard this sound that wasn't right".
"I was standing up next to the train driver," he said. "All of a sudden there was an almighty bang. The driver tried to brake but there was nothing she could do".
He said he saw the car and it was "absolutely obliterated".
"There was nothing left," he added.
Mr Sargent said the other passengers and the driver were all "shocked" by the incident.
"I've been shaking since I got off."
Bedfordshire Police advised drivers to avoid the area, while London Midland said taxis and minibuses replaced cancelled services between Bedford and Bletchley.
BBC Three Counties Radio reporter Usman Azad said the driver of the Bedford to Bletchley London Midland train looked "visibly distraught".
The crossing features what Network Rail described as a "half barrier", where only part of the road is blocked off.
A nearby resident, who did not wish to be named, said "people try to dodge the barriers".
"People always try to jump it because they can't wait for the train to come through," he said.
The crossing is used by about 36 trains and 1,200 vehicles each day. Trains can pass through at up to 60mph (96kmph).
A man died when the car he was in was hit by a train at a level crossing.