Михаил Иванов родился 20 ноября 1977 года в городе Остров Псковской области. Лыжным спортом начал заниматься в 11 лет. Его первым тренером был Павел Геннадьевич Мищенков. В сборной команде тренировался под руководством заслуженного тренера СССР Александра Грушина. После окончания школы Михаил Иванов закончил Великолукский государственный институт физической культуры, специальность — тренер лыжных гонок. В августе 2006 года женился на выпускнице того же института. В настоящий момент — депутат Государственной Думы РФ (2009 г.).
В сборной России Михаил Иванов с 1998 года. В 2000 году выиграл летний чемпионат России, проходивший в его родном городе. В том же году впервые выиграл гонку (30 километров классическим стилем) на одном из этапов Кубка мира. В 2001 году стал неоднократным чемпионом России, а также бронзовым призёром чемпионата мира в Лахти. Кроме М.Иванова в Лахти бронзовыми призёрами в индивидуальных гонках стали также Виталий Денисов (Гонка Гундерсена) и Сергей Крянин (50 км), дав надежду на возрождение российских мужских лыжных гонок после того, как мужскую сборную команду России возглавил заслуженный тренер СССР Александр Грушин.
Главным соревнованием для Михаила Иванова стали зимние Олимпийские игры 2002 года в Солт-Лейк-Сити. В гонке на 50 километров он с самого начала задал высокий темп, лидируя почти всю дистанцию. Наибольший отрыв от шедшего вторым Йохана Мюлегга достигал 40 секунд. Но после отметки в 35 километров Мюллег стал сокращать отставание и за три с половиной километра до финиша вышел в лидеры. Михаил Иванов в итоге пришёл вторым. Однако впоследствии Мюлегг был дисквалифицирован и лишён олимпийских медалей в связи с положительным результатом допинг-пробы.