Олег Кузьмин начинал карьеру в московском «Спартаке». Позднее выступал за «Уралан» (Элиста), «Черноморец» (Новороссийск), ФК «Москва» и «Локомотив» (Москва). В «Рубине» дебютировал в августе 2010 года. Выступая на позиции крайнего защитника, быстро вошел в число лучших игроков команды и позднее стал ее капитаном. В составе «Рубина»: бронзовый призер чемпионата России (2010), обладатель Кубка России (2011/2012) и Суперкубка России (2012). Олег Кузьмин участвовал во многих важных матчах «Рубина» в европейских кубковых турнирах, в том числе против грандов клубного футбола: «Барселоны», «Тоттенхэм Хотспур», миланского «Интера», мадридского «Атлетико», «Челси», «Ливерпуля». В сезоне-2012/13 в составе казанской команды стал четвертьфиналистом Лиги Европы. Всего на счету Олег 38 матчей и 2 гола в составе «Рубина» в еврокубках.
Выступая за «Рубин», Кузьмин впервые получил вызов в национальную сборную России. Он стал самым возрастным дебютантом в ее истории (34 года 119 дней), сыграв первый матч 5 сентября 2015 года против Швеции (1:0). 12 октября 2015 года Олег Кузьмин забил гол в ворота сборной Черногории в отборочном матче чемпионата Европы-2016 (2:0) и стал вторым после Виктора Колотова игроком «Рубина», отличившимся в матче за первую сборную страны. В сезоне-2015/16 Олег Кузьмин стал единственным игроком «Рубина» в списке 33-х лучших футболистов чемпионата России.
Тот отрезок, который Олег Кузьмин провел в «Рубине», стал для футболиста самым длинным и успешным. В Казани Кузьмин завершил свою игровую карьеру в мае 2018 года, сыграв в общей сложности 203 матча в составе клуба из столицы Татарстана. В апреле 2019 года Олег Александрович Кузьмин вошел в тренерский штаб «Рубина».