Born in Cardiff, Cotterill began his career at Bristol City before signing for Premier League Wigan Athletic where he spent two seasons before switching to Sheffield United, initially on loan and then later on a permanent deal. From United, Cotterill transferred to Swansea City in his native Wales, before spending a spell on loan at Portsmouth and then transferring to Barnsley. It was from Barnsley that Cotterill signed for near neighbours Doncaster Rovers, where he spent two seasons before joining Birmingham City. He spent the second half of the 2016–17 season on loan to Bristol City. Cotterill's contract with Birmingham was cancelled by mutual consent in December 2017, and he joined ATK of the Indian Super League. In January 2020, Cotterill came out of retirement to play for Cymru Premier side Barry Town United.