After two years at South Sydney, McKinnon moved to Parramatta. In 2004, during his first season with the Eels, he won the Jack Gibson Award and the Ron Lynch Media Award in the same season. In 2005, McKinnon was part of the Parramatta side which won the minor premiership but fell short of a grand final appearance losing 29-0 to North Queensland in the preliminary final.
With the Eels making it clear that they preferred Luke Burt ahead of the off-contract McKinnon, McKinnon often found it tough to make the first-grade team when the Eels were at full-strength. Consequently, he signed a three-year deal with the Warriors in 2007, filling in the void that was to be left by the departing Brent Webb. McKinnon cited the Warriors' style of play as being conducive to the game. Mckinnon became the 132nd first grade player for the Warriors when he made his début against the Eels, his former club, at Mt Smart Stadium in Round 1, 2007. McKinnon scored 9 tries in his first season with the club. During his time at the Warriors McKinnon was involved in several incidents. In a Round 19 match in 2007, McKinnon was sent off by referee Paul Simpkins in the final minute of play for allegedly kneeing Taniela Tuiaki. The replay, however, suggested there was no contact or intent, and consequently he was not cited after the match.
McKinnon's individual try against the Penrith Panthers in Round Fifteen 2007 was voted as the greatest of the year by NRL.com. McKinnon was ruled out of most of the 2008 NRL Season after an injury in the Warriors first trial game against the Newcastle Knights left him requiring a knee reconstruction. However McKinnon recovered relatively quickly and he made his return against the Brisbane Broncos in Round 22. He celebrated this game by scoring a try in a 16-12 Warriors win. In Round 25, 2008, McKinnon was suspended for three matches after allegedly spitting at touch-judge Brett Suttor. Suttor said that the spit landed 30 centimetres away from him, but the judiciary said that as McKinnon was at least six metres away from him, it was not possible for his spit to travel that far. He was selected for City in the City vs Country match on 8 May 2009.
After struggling to break into the Warriors 2010 team as he failed to regain his speed from his knee injury, McKinnon signed for the Wests Tigers on 26 May 2010. McKinnon had been contracted to the Warriors until the end of 2011 but was granted an immediate release by the Warriors. McKinnon played his first game for the Tigers in round 15, but was limited to 6 games for the season due to a hamstring injury. McKinnon began the 2011 season as the starting fullback for the Wests Tigers, but hampered by injuries, lost his position to Tim Moltzen. He was released from the final year of his contract so he could join Hull F.C. for a three-year deal starting in 2012. After six months in England he was granted a release for personal reasons.