Родился Костров около 1755 года в семье вятского крестьянина. Учился в Вятской семинарии, с 1775 года — в Славяно-Греко-Латинской академии, затем на философском факультете Московского университета (1778—1780). Числился официальным стихотворцем при Московском университете, хотел преподавать, но до кафедры допущен не был.
К нему участливо относился поэт Державин, в хороших отношениях с ним был Суворов, которому Костров посвятил ряд произведений. Но от нищеты спастись не удалось. Происхождение мешало реализовать все его возможности. От неудовлетворённости Костров заболел и умер в полной нищете от перемежающейся лихорадки в 1796 году. Костров на чердаке безвестно умирает — писал в лицейские годы в стихотворении «К другу стихотворцу» Пушкин.
Первыми его произведениями были оды архиепископу Платону, Потёмкину, Шувалову, Екатерине II, и другие, написанные в подражание Ломоносову, пестрящие церковнославянизмами, в духе нарождающегося сентиментализма. Вскоре Костров отказался от этого жанра, а перешёл к новым, разработанным к тому времени поэтами-лириками — песням и стихотворениям на случай. Но законы жанра диктуют свои правила. Кострову пришлось изменить и темы своих стихотворений. Если раньше он посвящал оды правителям, суворовским победам, мощи и величию прошедших времен, то теперь стал воспевать любовь, веселье, природу.
Язык его произведений также претерпел изменения, он стал простым и понятным, исчезли громоздкие фразы, его мелкие стихотворения — К бабочке, Клятва и другие — грациозны, легки и могут состязаться с лучшими лирическими произведениями XVIII века.
Оды Костров печатал отдельным изданием, а другие стихотворения помещал в Московские Ведомости, Зеркала Света, Приятном и полезном препровождении времени, Собеседнике любителей российского слова, Аонидах Карамзина (1796 год) и других.
Костров хорошо знал иностранные языки, как современные, так и древние. Именно он впервые в России перевел Илиаду Гомера и Золотого осла Апулея. За перевод Илиады современники назвали Кострова российским Гомером. Последней крупной работой Кострова в прозе были «Галлские стихотворения» Оссиана.
Кукольник создал драму Ермил Иванович Костров (1853 год), драматург Островский избрал его прототипом Любима Торцова в комедии Бедность не порок.