Родился в Киеве. С 2010 по 2015 год выступал за столичное «Динамо» в ДЮФЛУ. В сезоне 2015/16 годов играл за динамовскую команду U-19[2], в составе которого в том сезоне выиграл юношеский чемпионат Украины[3].
В 2016 году перешел в «Ворсклу». Выступал за юношескую, а впоследствии и молодежную команду клуба. В молодежке «ворсклян» стал системообразующим футболистом[4]. За главную команду полтавчан дебютировал 5 мая 2017 в победном (1:0) выездном поединке 28-го тура Премьер-лии против луцкой «Волыни». Сергей вышел на поле на 90+2-й минуте, заменив Дмитрия Хлёбаса[5]. Этот матч оказался для Косовского единственным в первой команде полтавчан.
В середине сентября 2019 подписал 1-летний контракт с «Оболонью-Бровар». В столичной команде получил 29-й игровой номер[6]. Дебютировал в составе киевской команды 15 сентября 2018 в победном (3:1) выездном поединке 9-го тура Первой лиги против «Днепра-1». Косовский вышел на поле на 77-й минуте, заменив Александра Гуськова[7]. В составе «пивоваров» сыграл 11 матчей в Первой лиге. В середине июля 2019 покинул киевский коллектив[8].
Карьера в сборной
С 2013 по 2015 год в футболке юношеских сборных Украины U-16 и U-17 сыграл 19 матчей, отличившихся 1 голом (с центральной части поля в воротах французов). Вызывался также в юношескую сборную Украины U-19, однако в ее составе не сыграл ни одного матча.