The 50-year-old, who ruptured a disc in her back on Monday, had been the front runner after scoring consistently high marks from the judges.
"The absolute destination for me was the journey. The journey was the gift," she said after winning the show.
Former child star Kyle Massey was runner-up and politician Sarah Palin's daughter Bristol came third.
Grey, who also suffered problems with her neck and knee during the series, said her mind went blank just before the winner was announced.
"I was in a surrender moment of whatever happens will be great," the trained dancer said.
Palin's appearance seemed to divide audiences, after one angry man blasted his TV set with a shotgun while watching the show last week.
Voting problems
However, public support kept her in the contest, despite finishing bottom with the judges for more than six weeks.
"This has been a life-changing experience," she said.
The 20-year-old added she had no expectations about her performance, but admitted that winning would have been like "a big middle finger to all the people out there that hate my mom and hate me".
There were some voting problems on the final show after producers said they had received a "record amount of activity", putting its online and telephone voting systems under strain.
"Some viewers reported experiencing difficulties registering their votes for the Dancing With The Stars finale, which affected each finalist equally," producers said in a statement.
But the issues was dealt with "promptly" and voting times were not extended.
Dirty Dancing actress Jennifer Grey has been crowned winner of US TV show Dancing With The Stars.