The 30-year-old keeper has signed a three-year contract with the West London side, with an option of a further 12 months.
The Gunners paid around £20million for Leno, who has nine caps for Germany, when they signed him from Bayer Leverkusen in June 2018.
Leno, who lost his place to Aaron Ramsdale last season, told FFCtv: "It feels amazing to finally be here. I can't wait to join the team, to train and play with the team.
"I'm relieved that everything is done. I'm just happy to be here. It took a little bit of time, but in the end we made it and that's the most important thing."
Leno, who had 304 games for Leverkusen under his belt by the time he arrived in North London, kept 37 clean sheets in his 125 appearances for Arsenal.
Fulham vice-chairman Tony Khan said: "Bernd Leno is the goalkeeper whom we have pursued steadfastly throughout this transfer window, and we're very excited that we've reached a transfer agreement and he's now fully committed to Fulham.
"He has played at the highest level, and he'll bring this experience and his leadership to our team. He'll be a great addition to [head coach] Marco's [Silva] squad, who are all excited for the season ahead."