The 26-year-old, the relegation-threatened side's leading scorer this term with 18 Bundesliga goals, has long been a target for several top European clubs and had a year left on his Cologne contract.
An Arsenal statement said Podolski, who will join fellow Germany international Per Mertesacker at the London club, had agreed a long-term deal for an undisclosed fee.
"This transfer gives me the opportunity to play for a top European club on an international level," said Podolski, who joined Cologne as a 10-year-old and returned to the club after a hapless three years at Bayern Munich from 2006-09.
"I did not decide against Cologne but for a great chance regarding my own sports development," he added in a Cologne statement.
"This was not an easy decision for me at all as Cologne, our fans and the city are special to me."
The Germany international, who has scored 43 goals in 95 appearances for the national team and is poised to go to Euro 2012, is hugely adored at Cologne.
Despite his most successful Bundesliga season so far, the left-footer has been unable to secure the top-flight future of his team with a game left to play in the season.
Cologne are in 16th place in the relegation play-off spot with 30 points, two above Hertha Berlin.
Arsenal are third in the Premier League thanks largely to the goals of main striker Robin van Persie. Podolski is likely to line up on the left wing of Arsene Wenger's favoured 4-3-2-1 formation.
"We are delighted to secure the deal for Lukas and see him as an important part of our future," Wenger said.
"He is a top-class player, a very good finisher and a proven performer at club and international level. He is a very strong player and will provide us with good attacking options."
Another German player, Marko Marin, is set to join Chelsea from Werder Bremen for next term.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.