Educated at St. Thomas the Apostle College, he was a product of the youth academy at Charlton Athletic before being released at 16 and joining Ipswich Town's academy. In 2005 Haynes was part of the Ipswich team which won the FA Youth Cup, the Blues beating a Southampton side including Theo Walcott and Gareth Bale in the final over two legs. He made his first-team debut on 24 September 2005, featuring as a second-half substitute in a 0–2 away win over Leeds United at Elland Road. After breaking into the first team, Haynes gained unsurprising popularity with the fans when on 5 February 2006 he scored the winner in the last minute for Ipswich against arch-rivals Norwich City, completing a record of having scored against Norwich City at every youth and senior level for their greatest rivals. On 19 November 2006 he scored a brace against Norwich to hand his side a 3–1 victory to further establish his cult status among Suffolk supporters at the age of only 18. He signed a new contract with Ipswich in October 2007, which was due to expire in 2010. Haynes had established himself in the "super sub" role under new Town boss Jim Magilton, who liked to use him late on in games to exploit tiring defenders with his lightning pace. However, as the season has progressed the youngster has found himself starting more games, either up front or out on the wing. According to various media sources Haynes had been watched by a number of Premiership clubs. Through his East Anglian derby adventures he has been given the nickname "Canary Crusher" having scored the winning goals in three of the five games against Norwich City he played in, the most recent on 13 April 2008 when he scored what turned out to be the winner, having also had his cross turned in to the Norwich City net by their own defender Alex Pearce. In total he's scored four goals against the Norfolk side at Championship level. He also scored against fellow rivals Colchester United in a 3–1 win at Portman Road during the 07/08 season.
Bristol City
On 13 July 2009, Haynes transferred to Bristol City for an undisclosed fee. During his time at Bristol City, Haynes scored 8 goals. On 20 January 2011, Haynes transferred to Barnsley F.C for an undisclosed fee, said to be looking for a "fresh start" after an unconvincing 2010/11 season for City.
Barnsley
Haynes had a good first half-season for Barnsley, netting six goals in 20 appearances which included two in his second game against Doncaster Rovers at the Keepmoat Stadium. He bagged in the 4–2 win over former side Bristol City and also notched a brace to confirm South Yorkshire rivals Sheffield United's relegation to League One. On 2 January 2012, Keith Hill announced that Haynes did not feature in his plans and is available for transfer.
Charlton Athletic
On 13 January 2012, Haynes rejoined Charlton Athletic for an undisclosed fee after playing for them as a youngster. Haynes scored his first goal for the club on 28 April 2012 against Preston North End which ended 2–2. On 16 May 2013 it was confirmed that Haynes had been released from Charlton.
Notts County
On 11 July 2013, it was announced that Haynes had signed a two-year contract with Notts County He scored his first goal for the club on 7 August, in a 3–2 win against Fleetwood Town in the League Cup. He scored his first league goal for the club on 17 September in a defeat to Leyton Orient, and his second in a 4–0 win against Crewe Alexandra on 5 October. His third goal for the club came on 29 October, in a 3–2 win against Oldham Athletic. On 21 January, he was made available for transfer by manager Shaun Derry. On 31 January 2014, Haynes joined Hibernian on loan. He left Hibernian at the end of the 2013–14 season. Haynes joined Crewe Alexandra on a one-month loan on 21 October 2014.
Ebbsfleet United
After a short spell at Cheltenham Town, Haynes signed for Ebbsfleet United in August 2015. Whilst on loan to Ebbsfleet, Haynes signed a season-long loan deal with Boreham Wood on 3 March 2016
Cray Wanderers
Haynes signed for Isthmian League side Cray Wanderers for the start of the 2016–17 season. He scored 29 goals in total despite missing nearly a third of the season through injury and suspension.
International career
Haynes made his debut for the England U19 national team on 6 February 2007, featuring as a substitute in a 4–0 win over Poland U19, getting an assist for England's third goal.