Иван Шадрин родился 17 июня 1913 года в селе Плотниково (современный Каменский район Алтайского края) в крестьянской семье. Русский.
Работал в колхозе, а с 1938 года на сахарном заводе в поселке Кировский (современная Алматинская область Казахстана). В июле 1941 года был призван в Красную Армию и отправлен на фронт.
16 ноября 1941 года у разъезда Дубосеково Волоколамского района Московской области Иван Шадрин в составе группы истребителей танков участвовал в отражении многочисленных атак противника, было уничтожено 18 вражеских танков. Данный подвиг вошёл в историю, как 28 героев-панфиловцев. Иван Шадрин в том бою был тяжело ранен и в бессознательном состоянии попал в плен, однако считался погибшим.
21 июля 1942 года Указом Президиума Верховного Совета СССР Шадрину Ивану Демидовичу было посмертно присвоено звание Героя Советского Союза за образцовое выполнение боевых заданий командования на фронте борьбы с немецко-фашистским захватчиками и проявленные при этом мужество и героизм.
Вскоре выяснилось, что Шадрин на самом деле жив. В августе 1942 года после проверки военная прокуратура подтвердила участие Шадрина в бою, и в августе или сентябре 1942 года он получил Золотую Звезду Героя Советского Союза.
С 1958 года жил в Казахстане в поселке Кировский. Скончался 21 октября 1985 года.