Foster played junior hockey in the USHL for three seasons, beginning in 2001. He played the 2001-2002 and 2002-2003 seasons with the Sioux Falls Stampede, and the 2002-2003 and 2003-2004 seasons with the Danville Wings. In his time with the Wings, he helped lead them to the final four of the USHL playoffs.
Following his USHL career, Foster joined the Bowling Green Falcons ice hockey team in 2004. During his time at Bowling Green, Foster recorded 82 points in 72 games, and ranks 10th all-time at BGSU in assists-per-gamewith an average of .875. In his freshman season of 2004-05, he was named CCHA Rookie of the Week on January 9, 2005. He finished the season as the ninth-highest scoring freshman in the conference. In the 2005-06 season, Foster's sophomore year, he recorded 51 points in 38 games, and was named Player of the Month for November 2005, Offensive Player of the Week on November 7, 2005, and was a nominee for the Hobey Baker Award as the NCAA's top men's hockey player.
Foster was signed as a free agent by the Toronto Maple Leafs on March 8, 2006. His contract included the maximum possible signing bonus, which was approximately $170,000. Foster was assigned to Toronto's AHL affiliate, the Toronto Marlies the next day. In 2005-06, Foster's rookie season with the Marlies, Foster scored one goal in eight games. On October 16, 2006, Foster was re-assigned to the Columbia Inferno of the ECHL, later to be recalled to the Marlies on November 11, 2006. Foster re-signed with the Toronto Marlies on July 18, 2007 with a one-year contract.
On February 24, 2008, Foster established a Toronto Marlies single season record for short-handed goals when he scored his fifth short-handed goal of the season against the Hamilton Bulldogs.
On March 17, 2008, Foster was called up to the Toronto Maple Leafs and made his NHL debut the following night against the New York Islanders, wearing jersey #32. He would appear in three games before being re-assigned to the Toronto Marlies on March 26, 2008. In his three games he totaled one shot, no points, and no penalty minutes.