He joined his local team Bristol City, at an early age, becoming a trainee and turning professional in August 1998. He had a spell on loan at Exeter City in January 2000 before establishing himself at Ashton Gate and becoming a popular player amongst the Ashton Gate faithful. In 2001 Bristol City turned down an offer of £400,000 for Brown from West Bromwich Albion. In March 2002, Brown received whiplash when he, along with City teammate Kevin Amankwaah, was in a car driven by a former City trainee, Rohan King, that collided with another vehicle. He played as a substitute as Bristol City won the 2003 Football League Trophy Final.
After recovering from a serious ear injury, Brown felt that it was time to move on to progress his career and he joined Queens Park Rangers in July 2004. His QPR career was plagued with injuries, and he had loan spells with Torquay United and Cheltenham Town.
After an unsuccessful trial with Barnsley, Brown joined Swindon Town on loan in November 2005. The deal became permanent in January 2006. Brown thanked the then Swindon boss Iffy Onuora and the club for saving his career. On Brown's return to Ashton Gate, Swindon's relegation was confirmed. With Swindon needing a win, they only managed to produce a draw despite Brown's fine performance which was capped off by an impressive solo goal. During the pre-season of 2006–07, Brown requested a transfer away from the County Ground, stating that he needed to pursue his career at a higher level. A trial at Doncaster Rovers was followed by an offer from Brentford which Brown turned down as he felt he could find a "better club" but he returned to the club after his unsuccessful trial period. A pre-season friendly appearance at home to Crystal Palace after requesting to be taken off the transfer list saw Brown booed and jeered by the home fans. Despite this, he resolved to remain at the club and work hard to regain his place. In February 2007 he was forced to apologise after gesturing to the travelling Swindon fans in the 1–0 defeat away to Barnet.
On 9 May 2007 it was announced that Brown was one of six players released by Swindon boss Paul Sturrock and on 20 June 2007 he signed for Gillingham. He scored his first goal for Gillingham against Bristol Rovers on 27 October 2007, but was transfer listed on 5 June 2008.
On 30 June 2008, Brown joined Football League Two side Lincoln City on a one-year deal after his contract at Gillingham was terminated. He made his debut for the side in a 1–0 defeat to Rotherham United on the opening day of the 2008–09 season. After making over 50 appearances for the club, Brown's contract was cancelled by mutual consent on 1 February 2010.
On 25 March 2010 he signed for Conference National side Wrexham after impressing on trial at the Welsh club, making his debut two days later in a 3–0 win over Histon. At the end of the season, Brown was not offered a new deal with the club and was subsequently released.
Brown signed for Darlington of the Conference National on 20 August 2010. Darlington suffered financial difficulties during Arnison's time at the club and his contract was terminated on 16 January 2012, along with the rest of the playing squad and caretaker managerCraig Liddle. The following day, a rescue bid led to the reinstatement of many of the club's players including Brown. During his time at Darlington, Brown played a part in Darlington's 2011FA Trophy victory.
On 16 August 2012, having featured regularly for the club during pre-season, he agreed to a short-term deal with Bath City. Brown had previously come close to joining the club at the height of Darlington's financial crisis in January 2012 but elected to remain with the North-East club. Upon finally signing for Bath City, club chairman Manda Rigby remarked, "We were speaking with Aaron last year when Darlington cancelled their players contracts, and I admire hugely his loyalty and integrity to his team mates and club at Darlington when their situation changed and he stuck with them through a very difficult time." He debuted in the club's Football Conference South 1–1 draw at Welling United on 18 August 2012, scoring the opening goal with a 30-yard effort.
On 10 May 2014, Hungerford Town announced they had signed Brown from Bath City. His spell with the club would be restricted to that as a single unused substitute for the 0-0 Southern Football League Premier Division home draw with Poole Town on 12 August 2014 before joining Weston-super-Mare three days later. He debuted for the club in their 3-1 Football Conference South defeat at Eastbourne Borough on 16 August 2014. In total he would make 32 appearances, 23 in the Football Conference South, for the Seagulls, scoring on just one occasion – a perfect free-kick against Hayes and Yeading – before joining Paulton Rovers as player coach on 1 June 2015.