Из дворян Черниговской губернии. Поступил 11 сентября 1779 в артиллерийский и инженерный (позже 2) кадетский корпус. После его окончания 12 мая 1786 выпущен штык-юнкером во 2-й Канонирский полк.
Боевое крещение получил при штурме Очакова в 1788 и произведён в чин подпоручика. В 1796 назначен командиром формирующейся роты конной артиллерии. В 1798 произведён в чин полковника и переведён в л.-гв. Конную артиллерию. Отлично проявил себя в 1805 г. под Аустерлицем, награждён 24 февраля 1806 орденом Св. Георгия 4-го кл. № 680
Сражался под Гейльсбергом и Фридландом в 1807 г., 16 марта 1808 получил чин генерал-майора.
В начале 1812 г. 6-й пехотный корпус, в котором Костенецкий командовал артиллерией, входил в состав 1-й Западной армии. Отличился при обороне Смоленска.
В Бородинском сражении первоначально возглавлял пехотную бригаду из Либавского и Софийского полков, а после гибели генерала А. И. Кутайсова командовал всей артиллерией.
Был 20 октября 1812 награждён орденом Св. Георгия 3-го кл. № 246
В ходе Бородинского сражения произошел эпизод, весьма характерный для Костенецкого. В разгар боя на одну из батарей ворвались польские уланы и начали рубить канониров. Находившийся поблизости Костенецкий бросился на выручку последним и, не удовлетворившись саблей, начал валить врагов орудийным банником. Одним ударом он сбросил с лошади ближайшего улана, затем, ринувшись в толпу, повергал на землю одного неприятеля за другим до тех пор, пока банник не сломался. Следуя примеру начальника, артиллеристы кто чем мог отбивали атаку улан и через несколько минут уже вновь открыли огонь.
Удача в этой рукопашной схватке подсказала Костенецкому мысль предложить Александру I ввести в артиллерии железные банники вместо деревянных. «Железные банники у меня могут быть, — отвечал на это предложение император, — но откуда взять Костенецких, чтобы владели ими». Прославленный в рукопашных схватках, Костенецкий был не только лихим рубакой. В Тарутинском лагере он подал М. И. Кутузову докладную записку, в которой изложил свое мнение о необходимости заставить войска Наполеона отступать из России по старой Смоленской дороге.
При отходе к Москве Костенецкий был назначен начальником артиллерии арьергарда. Отличился в сражениях при Спас-Купле, у Малоярославца и Красного. В представлении к награждению шпагой с алмазами «За храбрость» за дело при селении Чернишня у Спас-Купли 22 сентября 1812 М. И. Кутузов указывал: «Во все авангардные дела, равно и в сие сражение, командуя всеми батареями, хорошими своими распоряжениями устраивал оные на выгодных местах и, действуя с отличной неустрашимостью, наносил неприятелю великий вред».
В заграничных походах 1813—1814 гг. командовал артиллерией различных корпусов, находился во всех основных сражениях этих кампаний и получил несколько наград. Особенно отличился он под Дрезденом, где его распорядительностью было спасено около ста пятидесяти орудий, завязнувших на непроходимой, казалось, дороге. При Бар-сюр-Об, встав во главе трех пехотных полков и нескольких эскадронов кавалерии, генерал отразил нежданное нападение французов. Произведён в чин генерал-лейтенанта 28 января 1826.
Отличаясь личной скромностью, Костенецкий не искал признания своим заслугам. По небрежности в делопроизводстве его три раза награждали саблей «За храбрость» и два раза орденом Анны первой степени, то есть три раза он практически был обойден наградами. За бои в марте 1814 г. за Париж награждение бриллиантовыми знаками к ордену св. Анны 1-й степени было заменено благоволительным рескриптом. Помимо незаурядной физической силы — он один поднимал пушку, легко ломал подковы, рывком за хвост валил наземь любого коня — и храбрости, Костенецкий был известен чисто спартанской строгостью житейского уклада. Он не признавал иной обстановки своей комнаты, кроме простого стола и лавок, на одной из которых спал. Обливание холодной водой в летнее время и обтирание снегом зимой составляли его утренний туалет. Простота и добродушие в обращении с подчиненными и редкостная щепетильная честность по отношению к казенным средствам дополняли характер этого незаурядного человека.
В 1831 он заразился во время эпидемии холеры и скоропостижно скончался в возрасте около шестидесяти пяти лет. [из переписки братьев Константина Яковлевича и Александра Яковлевича Булгаковых за 1831 год: 8 июня: «Генерал Костенецкий умер, тот, что влюблялся во всех невест. Был хороший генерал, но в общении большой оригинал». 13 июля: «Кто же не знает Костенецкого? В сражениях остался цел, а умер от холеры». — «Русский архив», 1903, т. III, с.566; там же, 1902, т.1, с.74] Следовательно, В. Г. Костенецкий умер не позднее 8 июня 1831 г. Дата «6 июля», вероятно, это момент исключения из списков в связи со смертью.