Игорь Семшов родился 6 апреля 1978 года в городе Москва. Начинал играть в футбол в Москве в СДЮШОР ЦСКА. Дебютировал в 1995 году в играх за дубль, в 1996 году Семшов провел за команду 10 игр, в которых забил один гол. Не всегда попадая в основной состав первой команды, футболист в 1998 году подписал контракт с московским «Торпедо», с которым в 2000 году выиграл бронзовые награды чемпионата России. За 8 лет выступлений за «Торпедо» стал капитаном команды и «легендой» в глазах болельщиков, заслужив право выступать за национальную сборную, принял участие в чемпионате мира 2002 года и чемпионате Европы 2004 года. Пять раз он входил в число 33 лучших футболистов России, 4 раза признавался лучшим игроком «Торпедо» по итогам сезона, а также становился обладателем приза «Честная игра».
В 2005 году Юрий Семин пригласил игрока в московское «Динамо», чтобы помочь ему реализовать себя на более высоком уровне. Однако первый сезон за «белолубых» у игрока прошел скомкано, впрочем предыдущая команда Семшова выступила еще хуже - «черно-белые» оказались на одну строчку ниже «Динамо» в турнирной таблице, и этого вполне хватило для вылета команды из Премьер-лиги. В 2007 году руководство «Динамо» пригласило в команду нового тренера - Андрей Кобелев сумел сделать из опытных футболистов боеспособный коллектив, который в итоге финишировал на шестой строчке в турнирной таблице, а Игорь Семшов был признан болельщиками лучшим игроком команды. Футболист снова был приглашен в сборную - в частности на чемпионате Европы 2008 года, где вместе с командой завоевал бронзовые награды.
Проведя на тот момент за «белолубых» 96 встреч, в которых забил 17 мячей, Семшов согласился на переход в санкт-петербургский «Зенит». Таким образом, в команде собрали ударную тройку полузащитников сборной - Семшова, Денисова и Зырянова. Однако за команду он отыграл всего 1 сезон, после чего вернулся в динамовский коллектив. Отыграв в основе московской команды 2 сезона, после прихода в команду нового тренера - румына Дана Петреску - игрок потерял место в основном составе. В результате летом 2013 года «Динамо» расторгло с игроком контракт. 31 июля 2013 года футболист заключил годовой контракт с «Крыльями Советов», при этом первый гол в составе самарцев забил в матче против своей бывшей команды. В 2015 году 14 февраля Семшов заявил о завершении карьеры.
Выступал за олимпийскую и молодежную сборную России. Забил 1 гол в матче против молодежной сборной Польши. Первый матч за национальную сборную России провел 17 мая 2002 года в товарищеской игре на Кубке LG в Москве против Белоруссии. Игра завершилась вничью 1:1, а в серии пенальти сборная России уступила 4:5. Последний матч за национальную сборную России провел 29 мая 2012 года в товарищеской игре в Ньоне против Литвы. В этом матче он вышел на 72 минуте, заменив Романа Широкова. Игра завершилась вничью 0:0. ФИФА этот матч впоследствии не включил в официальный реестр. Первый гол забил в товарищеской встрече с Аргентиной 12 августа 2009 года. Первый гол в официальном матче - 9 сентября 2009 года в игре с Уэльсом.