The 27-year-old centre-back has had a string of bad injuries and has only played 18 out of 135 Bundesliga games over the past four years.
City boss Pep Guardiola, his manager at Bayern, had confirmed his interest in the Germany international.
Badstuber, who has spent his entire career at Bayern, is out of contract at the end of the season.
"I'm thankful Bayern have complied with my request," he said.
"I'd like to get some much-needed match practice at Schalke and I'm looking forward to my time in Gelsenkirchen."
Schalke have signed Manchester City target Holger Badstuber on loan from Bayern Munich for six months.