Родился 9 июля (22 июля по новому стилю) 1914 года в деревне Велгур Чердынского уезда Пермской губернии (ныне — в Красновишерском районе Пермского края, нежилая) в крестьянской семье. Русский.
Окончил 6 классов. Работал сплавщиком в леспромхозе.
В Красную Армию призван в мае 1942 года. В августе этого же года был направлен на фронт. Стрелок 42-го стрелкового полка красноармеец Иван Горшков 27 сентября1943 года одним из первых в батальоне переправился через реку Днепр севернее украинской столицы Киева. Находясь на захваченном плацдарме, Горшков участвовал в отражении вражеских контратак, лично уничтожил большое количество гитлеровцев.
В 1944 году Горшков стал офицером, окончив курсы младших лейтенантов. Член ВКП(б)/КПСС с 1944 года. С 1946 года младший лейтенант Горшков И. Д. — в запасе.
Работал в леспромхозе Пермской области. Затем жил в Ростове-на-Дону.
Указом Президиума Верховного Совета СССР от 29 октября 1943 года за образцовое выполнение боевых заданий командования на фронте борьбы с немецко-фашистскими захватчиками и проявленные при этом мужество и героизм красноармейцу Горшкову Ивану Дмитриевичу присвоено звание Героя Советского Союза с вручением ордена Ленина и медали «Золотая Звезда» (№ 1784).
Награждён орденом Ленина, орденами Отечественной войны 1-й степени, Трудового Красного Знамени, Красной Звезды, а также медалями.
Память
13 мая 2010 года в Ростове-на-Дону на доме № 44 по Кировскому проспекту, где жил Герой, установлена мемориальная доска[1].