Graham began his career in his native Northern Ireland with Dungoyne Boys and Glentoran, before moving to England to join the youth system at Crystal Palace. He reached the final of the FA Youth Cup and won the Southern Junior Floodlit Cup with the youth team during the 1996–97 season and also made his debut for the reserve team. Graham signed his first professional contract in March 1997 and broke into the reserve team during the early part of the 1997–98 season. A broken leg suffered in a Surrey Senior Cup match for the reserve team in late 1997 hampered Graham's progress. Graham returned to reserve team action early in the 1998–99 season and made his professional debut away to Watford on 24 April 1999, as a substitute for Steven Thomson after 77 minutes of the 2–1 defeat. Graham failed to receive a call into the first team during the early months of the 1999–00 season and departed the club in October 1999.
Graham joined Second Division club Brentford on loan on 28 September 1999 and the move was made permanent on 6 October. He finally made his debut on 18 December, as a late substitute for Martin Rowlands in a 1–0 defeat to Wigan Athletic. Graham broke into the team on a regular basis in March 2000 and finished the 1999–00 season with 13 appearances. Graham was out of favour under new manager Ray Lewington during the 2000–01 season, but a buildup of games in hand saw the squad stretched and Graham was a regular unused substitute. He made his only appearance of the season as a late substitute for Jay Tabb in a 2–2 draw with Luton Town on 3 May 2001. Graham was released at the end of the season, after making just 14 appearances during his time with the Bees.
Aside from a spell in Iceland with Úrvalsdeild club ÍBV in 2002, Graham played in non-league football between 2001 and his retirement in 2014. He played the majority of his football in the Isthmian and Combined Counties leagues and his most notable spell was with AFC Wimbledon, with whom he won consecutive promotions during the 2003–04 and 2004–05 seasons. He had two spells with Croydon Athletic and four with Whyteleafe and captained both clubs. His last club was Lingfield, for whom he made the final appearance of his career early in the 2014–15 season.
International career
Graham won five caps for Northern Ireland at U21 level. He made his debut in a 1–1 1999 International Triangular Tournament draw with Scotland on 4 June 1999. He made three appearances during Northern Ireland's unsuccessful 2000 European U21 Championshipqualifying campaign and the last of his caps came in a 2–1 defeat to Finland on 8 October 1999.