After coming out of junior hockey in the Ontario Hockey League, Cowan was not drafted in the NHL Entry Draft; he was signed by the Calgary Flames on 2 October 1995.[1] He would play for the Flames' minor league affiliates (the Roanoke Express of the ECHL and the Saint John Flames of the AHL) for the next few years, before making Calgary's roster in the 1999–00 NHL season. He would play for the Flames for two seasons before being traded with Kurtis Foster to the Atlanta Thrashers for Petr Buzek on 18 December 2001.[1]

In 2003–04, his third season with the Thrashers, Cowan was enjoying a career year, scoring 9 goals and 24 points through 58 games. However, he was once again traded on 9 March 2004, to the Los Angeles Kings in exchange for Kip Brennan.[1] He finished the season with a career-high 11 goals, 16 assists and 27 points.

On 30 December 2006, the Kings placed Cowan on waivers and was subsequently claimed by the Vancouver Canucks.[1] Towards the end of his first season with Vancouver, Cowan rose to brief prominence, scoring an unexpected 6 goals in 4 games.[2] During that span, a bra was thrown on the ice after his second goal of the game against the Tampa Bay Lightning, coining the moniker "Cowan the Bra-barian". The unique celebration was popularized among fans and in response, the entire Canucks team signed a bra that was auctioned to raise money for breast cancer research.[3]

As the Canucks entered the playoffs as the third seed, Cowan scored the first playoff goal of his NHL career in game one of the second round against the Anaheim Ducks. The following game, he scored the game-winning overtime goal to tie the series 1-1.[2] Vancouver was, however, defeated in five games by Anaheim.

Before the start of the 2007–08 season, Cowan was re-signed by the Canucks to a two-year, $1.45-million contact extension.[2] However, Cowan failed to build on the momentum he had drawn the previous campaign. He was injured early in the season, suffering a strained hip flexor on October 13, 2007, following a fight with the Oilers' Zack Stortini. Shortly after he returned, he was re-injured in a December 9 game against the Pittsburgh Penguins, separating his shoulder on a hit from enforcer Georges Laraque.[2] Cowan finished the season with just 1 assist in 46 games. Shortly before the 2008–09 season, he was put on waivers and cleared. Instead of being assigned to the Canucks' AHL affiliate, the Manitoba Moose, he was sent to the Peoria Rivermen as the Moose had already met their five NHL veteran maximum.[4] On April 30, 2009 Cowan was recalled from Peoria for the Canucks' 2009 playoff run.[5]

On August 20, 2009, Cowan signed a one-year contract with the Buffalo Sabres.[6]