McCarthy completes West Ham move
McCarthy was set to join West Ham from Porto in 2005 but the deal fell through and a year later he joined Blackburn.
This season he has struggled to make the starting line-up, scoring four goals in 16 appearances, many of them off the bench.
After signing a two-and-a-half-year deal, the 32-year-old said he had been impressed by the ambition of West Ham manager Gianfranco Zola.
"He has been great and has put my mind at ease on the kind of football the team will play and what I can expect at the club," McCarthy told Sky Sports News.
South Africa's all-time leading scorer with 32 goals in 77 games, McCarthy told the club's website: "I am looking forward to making up for lost time and I can't wait to make my debut.
"Although I could have gone to other clubs, this was the only one I wanted."
Blackburn manager Sam Allardyce called McCarthy selfish and unprofessional after he failed to show up for training while transfer negotiations were being held but the player said he had "no complaints" about the Lancashire club.
"They did not play the kind of football that I wanted to play and so I couldn't play there," he said.
"I never had a disagreement with the manager. I have always been respectful and he has always been up front with me."