Cavanaugh was born in Youngstown, Ohio, and attended Chaney High School. He was a football standout and went on to the University of Pittsburgh after graduating. In 1976, he was the starting quarterback for the undefeated Pittsburgh Panthers (he was on the same team with Tony Dorsett) and contributed to the team's National Championship 27–3 victory over Georgia in the Sugar Bowl. On that day, Cavanaugh was selected as the Sugar Bowl's Most Valuable Player.
Cavanaugh was also named MVP of the 1977 Gator Bowl, throwing four touchdown passes in a 34–3 win over Clemson.
In 1977, Cavanaugh threw for 1,844 yards with 15 touchdowns against six interceptions. Cavanaugh threw for the second-most passing yards in Pittsburgh history, only trailing quarterback Ken Lucas's 1,921 yards in 1965.
Cavanaugh retired as a professional player following the 1991 season, appearing in 112 games with 19 starts, completing 305 of 579 passes for 4,332 yards, 28 touchdowns, 30 interceptions and a 71.7 passer rating. Since his retirement, he has served in the following positions: chief recruiter and offensive coach, University of Pittsburgh (1992–1993); offensive coach, Arizona Cardinals (1994–1995); offensive coach, San Francisco 49ers (1996); offensive coordinator, Chicago Bears (1997–1998); and offensive coordinator, Baltimore Ravens (1999–2004), winning Super Bowl XXXV with the Ravens in 2000. Cavanaugh served as offensive coordinator for his old college team, the University of Pittsburgh Panthers, until 2008 when he accepted a position as an assistant coach and quarterbacks coach with the New York Jets. He would remain with the Jets until 2012.
On January 18, 2013, it was announced that Bears head coach Marc Trestman has hired Cavanaugh as the quarterbacks coach, replacing Jeremy Bates.