Wilson, born in Manchester, England, began his career at Stoke City. Wilson, who can play as a right-sided defender or midfielder, had made a handful of first-team appearances, coming through the youth-team ranks at the Britannia Stadium.
On 13 December 2003, he was loaned to Cheltenham Town on a one-month deal in order to gain experience of first team football. The loan deal was then extended for a further two months in January 2004. Following his loan spell, Wilson sealed a permanent move to Cheltenham on 30 March 2004 on a three-year contract for an undisclosed fee. Wilson made 121 league appearances for Cheltenham, scoring 14 goals.
On 12 January 2007, Wilson signed for Bristol City for an undisclosed fee. Missing much of the 2008–09 season through injury, Wilson made 74 appearances for City, scoring once against Crewe Alexandra.
On 29 June 2010, Wilson agreed to join Colchester United after being released by Bristol City, having played just four times for City during the previous season. It was the second time that Colchester manager John Ward had signed Wilson, as Ward signed him while Cheltenham manager in 2003 on loan and signed him permanently a year later. He scored his first goal for Colchester in a 3–2 win over Leyton Orient on 2 November 2010, and his second followed on 6 November 2010 in an FA Cup tie against Bradford City. On 15 May 2012, Wilson signed a two-year contract extension with Colchester, having been ever-present in the 2011–12 season. He became vice-captain during the 2012–13 season and stood in as captain during Kemal Izzet's absence through injury for much of the season. Following Izzet's departure from the club in September 2013, Wilson was named as Colchester's full-time captain on 3 September. Following the announcement of his promotion to club captain, Wilson duly scored in a Football League Trophy tie the same day, opening the scoring with a free kick in a 4–1 defeat against Dagenham & Redbridge.
Wilson joined Oldham Athletic on 10 June 2014 on a two-year contract after turning down the offer of a new contract from Colchester United. On 4 July 2016 Wilson signed a one-year contract extension. He scored his first goal for Oldham in an EFL Trophy tie against Blackburn Rovers Under-23s on 8 November 2016. He was released by Oldham at the end of the 2017–18 season, following their relegation.