McMahon attended college at Rutgers University. Though he started all four years (1997–2000), he sat out some games during the 1999 and 2000 seasons due to shoulder injuries. He participated in the 2000 Blue–Gray Football Classic and in the 2001 Senior Bowl. He left school as the all-time leader in passing and he was the first Scarlet Knight quarterback to be drafted in the NFL Draft.
The Lions drafted University of Oregon quarterback Joey Harrington with the third overall pick in the 2002 NFL Draft, but McMahon was named the starting quarterback to begin the 2002 season. After two straight losses as the starter, McMahon was benched in favor of Harrington before the third game of the season. McMahon took over in the last three games of the season due to Harrington having an irregular heartbeat. McMahon began the 2003 season as the backup to Harrington, and only saw action in two games during the season. The Lions re-signed McMahon to a one-year contract on April 1, 2004. In 2004, he was again the backup to Harrington, and played in one game to replace him.
McMahon signed a two-year contract with the Philadelphia Eagles on March 12, 2005, reuniting him with former Lions' head coach Marty Mornhinweg, who was now working as the Eagles' assistant head coach. McMahon started the 2005 season as the third-string quarterback behind starter Donovan McNabb and backup Koy Detmer. With McNabb undergoing season-ending sports hernia surgery following a November 14 game against the Dallas Cowboys, McMahon took over the reins of the Eagles for the remainder of the season. On December 24, 2005, he became the first Eagles quarterback to rush for two touchdowns in a single game since Randall Cunningham in 1992. After taking over for McNabb, McMahon compiled a record of two wins and five losses in the games he started. His quarterback rating was 55.2 for the season. He was released on March 20, 2006, three days after the team signed quarterback Jeff Garcia.
McMahon was signed to a two-year contract by the Minnesota Vikings on March 23, 2006, a move which reunited him with then-Vikings head coach Brad Childress, who was previously the offensive coordinator in Philadelphia. McMahon lost a training camp battle for the third-string job with fellow quarterbacks Tarvaris Jackson and Brooks Bollinger. He was cut on September 2, 2006, after posting a 23.7 passer rating in the preseason, the second worst rating in the league. He was worked out by the Cleveland Browns a few days later but not signed.
On February 20, 2007, McMahon signed with the Toronto Argonauts of the Canadian Football League. McMahon started the 2007 CFL season as the third-string quarterback despite a strong showing in the preseason. However, an injury to Michael Bishop bumped McMahon to starting quarterback. His stint as a starter lasted only two games before being replaced by Damon Allen as the acting starting quarterback for the team.
On September 9, 2008, McMahon was traded to the Montréal Alouettes. In return, the Toronto Argonauts received a sixth round draft pick in the 2009 CFL draft (used to select WR Tyler Scott). McMahon was cut on October 15 without having appeared in a game.
On March 28, 2013, McMahon signed with the Swedish team Uppsala 86ers.
On June 1, 2013, in the season opener against the Carlstad Crusaders, McMahon sustained injuries to several ligaments of the knee and was later ruled out for the season having taken only two snaps for his new team.