Родился на Петроградской стороне в Петрограде. Начал играть в 1936 год у в юношеской команде ленинградского завода «Электрик».
В высшей лиге чемпионата СССР по футболу дебютировал 22 мая 1939 года в возрасте 17 лет в выездном матче первого тура против московского «Спартака». Несмотря на 4 пропущенных мяча, молодой вратарь уже в первом же сезоне становится основным голкипером ленинградского «Сталинца» (так до 1940 года назывался «Зенит»), проведя 14 матчей. На следующий год Леонид Иванов принял участие в 18 матчах чемпионата.
Чемпионат СССР по футболу 1941 года был прерван начавшейся Великой Отечественной войной. Игроков «Зенита» эвакуировали в Казань с оптическим заводом вместе с семьями и тренером Константином Лемешевым летом 1942 года. Работая на заводе по 12-14 часов в сутки, футболисты находили в себе силы тренироваться и проводить товарищеские матчи.
В 1944 году был возобновлён розыгрыш Кубка СССР, который ленинградский «Зенит» сенсационно выиграл, обыграв последовательно «Динамо» Москва (3:1), «Динамо» Минск (0:0, переигровка 1:0), «Динамо» Батуми (1:0), «Спартак» Москва (3:2) и в финале — московский ЦДКА (2:1). Леонид Иванов сыграл ключевую роль в успехе своего клуба, пропустив за шесть матчей всего 4 мяча.
В послевоенных чемпионатах «Зенит», как и до войны, был средней командой, не претендующей даже на медали. Тем не менее, Леонид Иванов считался одним из лучших вратарей страны. Дважды — в 1950 и 1951 годах он назывался № 1 на позиции вратаря в списке 33 лучших футболистов сезона в СССР. Леонид Иванов регулярно получал приглашения о переходе в московские клубы «Спартак» и ВВС, но неизменно отказывался. Однажды ему вместе с одноклубником Фридрихом Марютиным даже пришлось весь день скрываться от посланников футбольного клуба ВВС (который в то время курировал Василий Сталин), прилетевших в Ленинград, чтобы принудить лучших футболистов Зенита перейти в ВВС. Последний матч за «Зенит» Леонид Григорьевич Иванов провёл 21 октября 1956 года на стадионе имени С. М. Кирова в последнем туре чемпионата против «Динамо» Киев (5:1)
Всего в высшей лиге чемпионата СССР Леонид Иванов сыграл 289 матчей, в которых он пропустил 440 мячей.
В начале 1950-х годов было принято решение выйти из международной спортивной изоляции и отправить советскую спортивную делегацию на летние Олимпийские игры 1952 года в Хельсинки. Леонид Иванов стал основным вратарём сборной команды по футболу и защищал ворота во всех трёх матчах команды. В официальных матчах дебютировал 15 июля 1952 года в городе Котка в матче 1/8 финала против сборной Болгарии. Поражение в четвертьфинале турнира от сборной Югославии руководством Советского Союза было расценено как позор (отношения между Югославией и СССР в то время были откровенно враждебные), ряд игроков и тренеров были лишены званий мастеров спорта, а ЦДСА, как один из базовых клубов сборной, был вообще расформирован. Тем не менее, игра Леонида Иванова на Олимпиаде нареканий не вызвала, более того, по возвращении сборной из Финляндии ему было присвоено звание Заслуженный мастер спорта СССР.
Всего Леонид Иванов провёл в составе сборной СССР по футболу 9 игр, в которых пропустил 12 мячей, в том числе — 3 официальных игры (9 пропущенных мячей).
Сразу по окончании карьеры игрока Иванов занялся тренерской деятельностью. Он тренировал:
Закончив с тренерской деятельностью, Иванов работал таксистом. Написал книгу «В воротах „Зенита“», выпущенную в 1976 году и переизданную в 1987 году.
Умер 14 сентября 1990 года. Похоронен на Волковском кладбище в Санкт-Петербурге.
Мемориальная доска на доме № 48 на Кузнецовской улице в Санкт-Петербурге (открыта 16 сентября 2004 года)