Kelly began his professional career when he joined Hibernian from Scottish non-league side United. He subsequently moved on to Partick Thistle and Queen of the South before joining Hartlepool United on a free transfer in August 1985. He played 15 times the following season, but was released and joined Torquay United in July 1986.
The following season saw Torquay involved in a battle to avoid being the first side to suffer automatic relegation to the Conference, Kelly playing in the final game of the season against Crewe Alexandra in which Paul Dobson's late goal saw Lincoln City relegated. He had begun his Plainmoor career as a midfielder, but switched to left-back after the sale of Phil King to Swindon Town. Cyril Knowles took over as Torquay manager in the summer and transformed the side into one battling for promotion. Kelly played 120 times for the Gulls before moving to York City on a free transfer in June 1989.
He immediately became a regular in the York side, but in March 1990 moved back to Devon, joining Exeter City for a fee of £15,000. He played 88 times, scoring 9 goals, for the Grecians, winning a Division Four championship medal in 1990, before returning to Torquay United on a free transfer in January 1993 and playing his part in another of Torquay's escapes from relegation to the Conference that season. He played 117 times, scoring 8 goals in his second spell with the Gulls before being released by Eddie May at the end of the 1995-96 season. He moved to non-league Weymouth, before moving to Teignmouth from whom he joined Ilfracombe Town.
Kelly left Ilfracombe in November 1997 to join Taunton Town, managed by former Torquay teammate Russell Musker. He quickly settled in to the side and was appointed captain, taking over as player-coach when previous assistant manager Derek Fowler stepped down in September 2000. At the end of that season he played in Taunton's 2-1 FA Vase Final win over Berkhamsted Town at Villa Park.
In January 2004 Kelly moved to Bideford, managed by another former Torquay colleague, Sean Joyce. He remained with Bideford until the summer of 2006 when he joined Bridgwater Town, where he played alongside his son Cameron, a midfielder.
In March 2007, Kelly joined Devon League side Stoke Gabriel and by 2009 he was player-manager of Bovey Tracey.