Osborne started his career at South Ruislip Rangers. He was rejected by Arsenal, Chelsea, Fulham and QPR before joining Brentford.
Osborne joined League One side Brentford in the summer of 2004. He quickly made an impression in the club's youth and reserve teams and received his first call into the senior squad for a Football League Trophy first round match versus Milton Keynes Dons on 28 September 2004. Awarded the number 38 shirt, he remained on the bench for the 3–0 defeat.
Osborne was an unused substitute on two further occasions before making his Brentford debut against Hull in the final game of the 2004/05 season, starting the match and playing the full 90 minutes. He found appearances hard to come by the following season, making only three, though he started and played the full ninety minutes in each match. He spent the final two months of the season on loan at Conference South side Hayes.
After Martin Allen left as manager and his squad was broken up, Osborne became a first team regular under Leroy Rosenior (and later Scott Fitzgerald) during the 2006–07 season, at the end of which Brentford were relegated to League Two. After missing out the last two matches at the end of the season following a red card in a 3–0 loss against Doncaster Rovers, Osborne made twenty-one appearance for the club and was awarded a two–year contract, keeping him until 2009.
In the 2007–08 season, in the absence of Matt Heywood and Kevin O'Connor, Osborne captained the team on several occasions. He scored his first goal for Brentford in a 1–0 win at Shrewsbury Town on 5 January 2008, converting a header from Ryan Dickson's corner. Despite failing to help the club regain promotion back to League One, Osborne went on to make twenty-nine appearance for the club.
In the 2008–09 season, Osborne made his first appearance of the season, where he started and played 90 minutes, in a 1–0 loss against Bury. However, Osborne soon fell out of favour as a centre-back, but was reassured by Manager Andy Scott that he could still have a future at Brentford. After returning from his loan spells, Osborne made his first appearance for the club since August, where he started in a match against Port Vale. Osborne played a role when he was fouled by Ross Davidson, who then got sent-off and was booed by Port Vale supporters. But Osborne proved them wrong when he scored the first goal, in a 3–0 win. Osborne then scored in the next game four days later, in a 1–1 draw against Darlington. Osborne then scored, in a 2–0 win over Port Vale on 14 February 2009 During a match against Bournemouth on 9 April 2009, Osborne was in an alteration with his teammate Darren Powell, which resulted a separation from teammates. After the match, Osborne revealed that he and Powell made amends over the incident. But Powell was nevertheless disciplined. Osborne then scored on the last game of the season, in a 2–0 win over Luton Town, which confirmed their promotion from League Two. Despite being on the bench for most of the games in the second half of the season, Osborne went on to play a key role in Brentford's promotion to League One, in which he said winning the promotion has overcome the pain of relegation two years ago. Having made twenty-three appearance and scoring four times, Osborne was awarded a new contract, keeping him until 2010.
However, in the 2009–10 season, his appearances were limited and was sent to play in the reserve. At one point, Osborne was considered to be loaned out to get first team, but remained at the club to fight for the first-team place. This would last until March, when an injury crisis gave him an extended run of games in the team. In a 0–0 draw against Bristol Rovers on 17 April 2010, Osborne played a role during the match when he ”produced two goal-line clearances” to help the club keep a clean sheet. His good form resulted in a new contract at the end of the campaign.
The 2010–11 season saw Osborne continued to regain his first team place and described as no longer “promising youngsters” and then scored his first Brentford goal of the season on 1 March 2011, in a 1–1 draw against Notts County. Then in January, Osborne was offered a three-year contract by the club, while Osborne, himself, expressed desire to stay at the club on a longer term. Despite Scott’s sacking, Osborne hoped the contract extension continued following the arrival of Nicky Forster, Osborne said the contract extension would continue. On 8 March 2011, Osborne was unfortunate to scored an own goal after his teammate, Richard Lee saved a penalty spot kick from Ashley Barnes, but scored an own goal when he meant to clear it, as Brentford lost 1–0 against Brighton. In the final of the Football League Trophy against Carlisle United, Osborne made a mistake, resulting a goal from Peter Murphy, which turned out to be the only goal in the game. Despite sidelined with injuries, Osborne finished the season, making forty–two appearance and scoring once.
Ahead of the 2011–12 season, Brentford rejected a bid from Charlton Athletic for Osborne. Despite suffering from a hamstring injury in the pre-season, Osborne was a few candidate for the captaincy by Manager Uwe Rösler, but was given by Jonathan Douglas and Richard Lee instead. Osborne continued to be in the first team regular until he suffered a fitness concern and foot injury that kept him out for two months. After returning to full training, Osborne made his first appearance in the development match against Brighton on 20 December 2011. Despite being keen on staying, Osborne turned down a new contract, stating he would leave the club in the winter, rather in the summer. This prompted interests from Reading and Charlton Athletic. Despite keen on leaving the club, Osborne remained at the club for the rest of the season after Reading pulled out the move, citing his fitness concern. After five months without playing, Osborne made his first appearance for Brentford, where he played 14 minutes, coming on as a substitute, in a 2–0 loss against Sheffield United on 10 March 2012. Osborne finished his 2011–12 season, making twenty-three appearance for the club.
In May 2012, Osborne was released after turning down a new deal earlier in the season. Having failed to make a move in January, Osborne said he was keen to stay at the club. However, Osborne stated his future at Brentford was uncertain and hinted of leaving the club. Upon learning his release by Brentford, Osborne expressed sadness to have left the club, having been at the club since he was fifteen.
To get a regular first-team football, Osborne had a one-month loan spell with Oxford United on 1 September 2008. Osborne went on to make six appearance for the club before returning to his parent club despite the club were keen on extending his loan spell.
Despite rumours that he could re-join Oxford on loan again, it was announced on 10 October 2008 that Osborne transferred to Eastbourne Borough for a one-month loan lasting until 6 November 2008. He played three games and scored a goal against Barrow during a league game.
Despite interests from Charlton Athletic, Hull City and Nottingham Forest, it was announced on 13 July 2012 Osborne agreed a free transfer to Kenny Jackett's Millwall after sealing a 2-year deal. Upon joining the club, Osborne was given a number twenty-seven shirt.
After being on the bench in the opening game of the season, Osborne made his Millwall debut, playing 90 minutes, in a 2–1 win over Peterborough United on 21 August 2012 and was given five more starts until he suffered a calf injury by the end of September. Even he managed to overcome his fitness concern, Osborne struggled to regain his first place, having on the substitute bench. Osborne then made his first appearance in three months, where he played in the third round of FA Cup against Preston North End on 5 January 2013, which Millwall won 1–0. After appearing less frequently as a result on the substitute bench and his own injury concern, Osborne scored his first Millwall goal on 23 March 2013, in a 2–1 loss against Blackburn Rovers. Osborne later finished his first season at Millwall, making thirteen appearance and scoring once.
However, his second season at Millwall saw Osborne featured occasionally and it wasn’t until 5 October 2013 when Osborne made his first appearance of the season, in a 5–2 loss against Bournemouth.
On 1 November 2013, Osborne signed for Bristol City on loan until 1 December 2013. Upon joining the club, Osborne said it was an easy decision to join Bristol City, even if it meant playing in a lower division. Osborne made his Bristol City debut four days later, where he played 90 minutes, in a 2–0 win over Crawley Town. His loan spell at Bristol City was extended until 5 January 2014. Four weeks later, on 30 November 2013, Osborne was sent-off after being involved in a late scuffle with Paul Gallagher, which saw Bristol City lost to Preston North End. After serving two matches, Osborne returned to the first team, where he started and played 90 minutes, in a 1–0 win over Walsall on 26 December 2013.
On 7 January 2014, Osborne joined Bristol City on a permanent basis, signing a two-year contract with the club. Weeks after signing for the club, Osborne scored his first Bristol City goal against his former club, Brentford, which saw Bristol City lose 3–1. However, during the match, Osborne suffered an injury and was sidelined for weeks. Following his return, Osborne managed to regain his first team place towards the end of the season and made twenty-seven appearance.
However, ahead of the 2014–15 season, Osborne suffered an injury during a match in the pre-season friendly match and missed the start of the season. Even after he made his return to the first team, Osborne spent the most of the season on the substitute bench. It wasn’t until 12 August 2014 when Osborne made his first appearance of the season in the first round of League Cup, which saw Bristol City lose 2–1 to Oxford United.
After his loan spell at Wimbledon came to an end, Osborne was released by the club, Upon learning being released by Bristol City, Osborne expressed gratitude to the club via Twitter.
With his first team place at Bristol City increasingly limited, Osborne joined Colchester United on loan until the end of the season. Osborne made his Plymouth Argyle debut two days later, where he made his first start and played 90 minutes, in a 2–0 lost against Doncaster Rovers. Osborne made three more appearance for the club until he suffered a hamstring injury during a 3–2 loss against Crawley Town on 14 March 2015. Though he never played again with four appearance, Osborne was recalled by his parent club.
On 2 July 2015, Osborne joined League Two side Wimbledon on loan until the end of the season. Upon joining Wimbledon, Osborne said the move could help him get his career on track. Osborne was also given number twenty-two shirt ahead of a new season. Osborne made his Wimbledon debut in the opening game of the season, playing 90 minutes, in a 2–0 loss against Plymouth Argyle. On 26 September 2015, Osborne was sent-off for a second bookable offence, just five minutes after receiving a yellow card, in a 2–0 loss against Luton Town. After serving a suspension, Osborne continued to be in the first team and praised Manager Neal Ardley for his decision tactics. However, half-way through the season, Osborne suffered a knee injury in training and missed the end of the season. Despite this, Osborne made twenty-three appearance for the club and returned to his parent club.
After leaving Bristol City, Osborne joined Plymouth Argyle on 16 June 2016, with the contract remained undisclosed.
In the pre-season friendly, Osborne remained on the sidelined, due to continue recovering from a thigh injury. While rehabilitating his thigh injury, Osborne hoped of returning from a thigh injury suffered a setback, which delayed his recovery further.
On 16 January 2017, Osborne signed a two-year contract with Scottish Premiership side Kilmarnock and was given the squad number 5. Financial terms of the deal were undisclosed. He made his debut on 21 January 2017, as Kilmarnock lost 1–0 against Hamilton Academical in the Scottish Cup.
Osborne joined Grimsby Town in July 2017 after playing as a trialist in several of the club's pre-season friendlies.Brentford
League Two: 2008–09
As of match played 12 September 2017
Osborne revealed he grew up supporting Arsenal and was raised in West London.