Начал заниматься футболом в клубе «Партилле» (пригород Гётеборга). Первым профессиональным клубом Чельстрёма был «Хеккен». В 1999 году клуб возвращается в элиту шведского футбола, в этом же сезоне состоялся дебют 16-летнего полузащитника. В 2000 году в поединке против «Гётеборга», Чельстрём дебютировал за «Хеккен», выйдя на замену в конце матча, а спустя минуту забил свой первый гол за клуб.
Известность в Швеции он получил уже играя за «Юргорден», с которым стал чемпионом страны2002 и 2003 годов (в 2002 году Ким забил в чемпионате 12 мячей, а в 2003 году отличился 14 раз).
Зимой 2004 желание приобрести Чельстрёма выражают «Тоттенхэм» и «Челси», но полузащитник делает выбор в сторону скромного французского «Ренна». Сумма трансфера 1,7 млн долларов. В этой команде тогда выступал его партнёр по сборной страны, вратарь Андреас Исакссон.
Во второй половине сезона 2003/04 Ким забил 7 мячей в 18 матчах. В сезоне 2004/05 команда ослабленная травмами выступала неважно, в этот момент Чельстрём проявляет свои лидерские качества. «Ренн» по итогам сезона занимает четвёртое место и получает право на участие в Кубке УЕФА.
В мае 2006 года подписал контракт с «Олимпик Лионом». 30 июля 2006 года в матче за Суперкубок Франции против «Пари Сен-Жермен», Чельстрём дебютировал за новый клуб. 4 августа в поединке против «Нанта» он дебютировал в чемпионате[3]. 17 октября того же года в матче группового этапа Лиги чемпионов против киевского «Динамо» Ким забил свой первый гол за «Лион»[4]. 22 октября швед отметился забитым мячом в выездном поединке против «Марселя», который стал для него дебютным в чемпионате Франции, а его команде помог одержать крупную победу, 1-4[5]. В этом клубе он дважды становился чемпионом Франции (для клуба эти титулы стали шестым и седьмым подряд). 30 мая 2009 года в поединке против «Тулузы», Ким провёл 100 матч за клуб в Лиге 1[6]. После принятия закона о повышенных налоговых отчислениях Чельстрём, как многие легионеры решил покинуть Францию.
12 апреля Чельстрём забил послематчевый пенальти в полуфинале Кубка Англии против «Уиган Атлетик», но в победном для «Арсенала» финале Ким не попал в заявку на матч[14].
Летом Чельстрём вернулся в «Спартак». При новом тренере москвичей Мурате Якине он снова стал основным футболистом «красно-белых». 2 ноября в матче против «Кубани» Ким сделал «дубль»[15]. В мае Чельстрём отказался продлевать контракт со «Спартаком». Активный интерес к Киму проявил швейцарский «Грассхоппер»[16]. 5 июня он подписал контракт с «Грассхоппер» на три года[17]. 19 июля в матче против «Туна» Ким дебютировал в швейцарской Суперлиге[18]. 29 ноября в поединке против «Цюриха» Чельстрём забил свой первый гол за «кузнечиков»[19].
В начале 2017 года Ким расторг контракт с «Грассхоппером» и вернулся в свой бывший клуб «Юргорден»[20]. В конце того же года Чельстрём расстался с «Юргорденом» и объявил о завершении карьеры[21].
Участвовал в финальных турнирах чемпионатов Европы 2004 (4 матча, забитый послематчевый пенальти в проигранной серии против Нидерландов в 1/4 финала), 2008 (2 матча), 2012 (3 матча) и 2016 (3 матча) годов, чемпионата мира 2006 года (4 матча). Чельстрём — один из совладельцев рекорда по количеству участий в финальных стадиях чемпионатов Европы (4). Забил несколько важных голов в отборочном турнире чемпионата Европы 2008 года, в том числе красивый гол в ворота сборной Исландии ударом с 45 метров.
После Евро-2016 отказался играть за сборную. Практически вся карьера Чельстрёма в сборной прошла в то время, когда за команду выступал лучший бомбардир в её истории Златан Ибрагимович, который также ушёл из сборной в 2016 году.