As a high school freshman, Brown attended Brother Rice High School in his hometown of Chicago. As a sophomore, he transferred to nearby Leo Catholic High School where he led his new team downstate and along the way, captured Class A All-State honors, being the only sophomore on the ballot. The following year Leo moved up in population and therefore changed classes to the larger Class AA. In Class AA, Brown continued his dominating ways, garnering All-State honors again, this time initiating the record as the only player to ever be both Class A and AA All-State. Things were changed up again for his senior year in 1999–2000 as Leo were moved back down to Class A, as Brown went on to help Leo win the Catholic League title and earn McDonald's All-American honors.
In his freshman season at DePaul, Brown joined Imari Sawyer as the first DePaul newcomers since 1992 to have a double-double in their first collegiate game, as he recorded 18 points and 11 rebounds against Lewis University. He scored a season-high 19 points while also grabbing eight rebounds against Marquette. In 30 games (six starts), he averaged 6.5 points and 4.9 rebounds in 22.6 minutes per game.
In his sophomore season, Brown became the first DePaul player since Stanley Brundy in 1988–89 to lead the team in scoring, rebounding, field goal percentage and blocked shots. He also ranked among Conference USA leaders for rebounding (second), scoring (13th) and field goal percentage (14th). He set a C-USA single game record with 27 rebounds against TCU, which was the second-best single-game total in DePaul history. In 26 games (25 starts), he averaged 14.5 points, 9.4 rebounds and 1.0 blocks in 31.8 minutes per game.
In his junior season, Brown was selected to the Preseason All-Conference USA team by the league coaches, and went on to record multiple double-doubles in 2002–03, none better than a game-high 20 points and 11 rebounds against UNLV. In 28 games (18 starts), he averaged 9.4 points and 9.0 rebounds in 30.5 minutes per game.
In his senior season, Brown earned second-team All-Conference USA honors after he was first selected to the Conference USA All-Preseason team and during the season, he was twice named C-USA Player of the Week. He was also named to the All-Tournament team at the Spartan Coca-Cola Classic. In 23 games (all starts), he averaged 13.5 points and 9.2 rebounds in 32.2 minutes per game.
Brown finished his four-year career ranked fourth in Conference USA history with 855 rebounds and became one of only eight players in DePaul history to have 1,000 points and 800 rebounds in a career. He went on to be named to the All-Tournament Team at the 2004 Portsmouth Invitational Tournament after averaging 18.3 points (4th in tourney) and 10.7 rebounds (2nd in tourney).
After going undrafted in the 2004 NBA draft, Brown joined the Cleveland Cavaliers for the 2004 NBA Summer League. On October 4, 2004, he signed with the New Jersey Nets. However, he was later waived by the Nets on October 20, 2004. The following month, he signed with Sedima Roseto of Italy for the 2004–05 season. In February 2005, he left Roseto and signed with Budućnost Podgorica of Montenegro for the rest of the season. In April 2005, he joined the Barangay Ginebra Kings of the Philippines where he played seven games for the club before leaving in late May.
In July 2005, Brown joined the Seattle SuperSonics for the 2005 NBA Summer League. In October 2005, he signed with the Daegu Orions of South Korea for the 2005–06 season. In February 2006, he was traded to the Incheon ET Land Black Slamer.
In July 2006, Brown joined the San Antonio Spurs for the 2006 NBA Summer League. On September 29, 2006, he signed with the Atlanta Hawks. However, he was later waived by the Hawks on October 26, 2006. On November 2, 2006, he was selected by the Sioux Falls Skyforce with the second overall pick in the 2006 NBA Development League Draft. He went on to earn D-League Player of the Week honors on December 18 after recording three straight double-doubles over the week as he led the Skyforce to a 3-0 record. In 16 games for Sioux Falls, he averaged 22.8 points and 10.8 rebounds per game.
On January 5, 2007, Brown signed a 10-day contract with the Seattle SuperSonics, going on to sign a second 10-day contract on February 15, and for the rest of the season on January 25.
Despite joining the Indiana Pacers but not playing for them during the 2007 NBA Summer League, Brown signed with the Memphis Grizzlies on July 20, 2007. Despite a promising stint with the SuperSonics, Brown managed just 33 games for Memphis in 2007–08 as he averaged 3.0 points and 2.8 rebounds in 8.7 minutes per game. He did, however, average 13.0 points and 11.5 rebounds in 27.8 minutes per game over the final four games of the season after the Grizzlies had already been ruled out of playoff contention.
On September 28, 2008, Brown signed with the Charlotte Bobcats. However, he was later waived by the Bobcats on November 19, 2008 after appearing in four regular season games. On December 3, he was acquired by the Austin Toros of the NBA Development League. On January 22, he parted ways with Austin after appearing in 17 games. A few days later, he signed with Banvit Bandırma of Turkey for the rest of the season.
In July 2009, Brown joined the Dallas Mavericks for the 2009 NBA Summer League. On December 3, 2009, he signed with the Zhejiang Golden Bulls for the rest of the 2009–10 CBA season.
On April 1, 2010, Brown signed with Leones de Ponce of the Baloncesto Superior Nacional where he played one game before signing with Al Jalaa Aleppo of Syria on April 22 for the rest of the season.
In July 2010, Brown joined the Golden State Warriors for the 2010 NBA Summer League. On September 24, 2010, he signed with the New Jersey Nets, re-joining the team for a second stint. However, much like last time, he was waived by the team on September 29, before training camp even began. Five days later, he signed a one-year deal with Panellinios B.C. of the Greek Basket League. On January 6, 2011, he was released by Panellinios after appearing in six league games and three EuroCup games.
On January 13, 2011, Brown signed with the Perth Wildcats of the Australian National Basketball League as a short-term injury replacement for Matthew Knight. However, after losing co-captain Shawn Redhage to a season-ending hip injury on January 23, Brown's contract was extended by the Wildcats to see out the 2010–11 season. The Wildcats went on to finish fourth on the ladder and played the New Zealand Breakers in the semi-finals, where they lost 2 games to 1. In 15 games for the Wildcats, he averaged 9.3 points and 6.7 rebounds per game.
On July 7, 2011, Brown signed with Huracanes del Atlántico for the 2011 LNB season.
On November 10, 2011, Brown signed with Shahrdari Gorgan of Iran for the 2011–12 season.
On October 14, 2012, Brown signed with the KCC Egis of South Korea for the 2012–13 season.
On November 14, 2013, Brown signed with Club Atlético Atenas of Uruguay for the 2013–14 season. However, he left the club later that month after just two games.
On January 24, 2014, Brown signed with the Sendai 89ers of Japan for the rest of the season. However, less than a week later, he parted ways with the club before playing in a game for them after a family emergency arose. He went on to sign with Al-Ahli of Bahrain on February 26 for the rest of the season.