He told City's official website: "I wanted to be part of Norwich's promotion challenge this season but the lure of Premier League football was too great.
"I've really enjoyed my time at Norwich. I would like to thank all the fans for their brilliant support. They've been so good to me.
"I wish Norwich every success in the future."
Earnshaw scored 20 goals last season despite being sidelined for three months with a torn groin muscle.