Родился 13 мая 1948 года в Ленинграде.
Учился в Ленинградском государственном университете, где он получил кандидатскую степень в 1974 году (его руководителем был Владимир Рохлин), доктор физико-математических наук с 1983 г. C 1973 по 1991 годы преподавал в Ленинградском государственном университете. С 1986 года являлся членом Санкт-Петербургского отделения института им. Стеклова.
Затем работал за границей. В 1992-1997 годах был профессором Калифорнийского университета в Риверсайде в Риверсайде. В 1994-2007 годах - профессор Уппсальского университета в Швеции, ушел в отставку из-за учёного конфликта. С 2009 года Виро - старший научный сотрудник Санкт-Петербургского отделения института им. Стеклова и профессор Университета штата Нью-Йорк в Стоуни-Брук.
Олег Янович Виро был приглашенным докладчиком на Международном конгрессе математиков в 1983 году в Варшаве. В 2000 году сделал пленарный доклад на Европейском математическом конгрессе в Барселоне. Лауреат премии Goran Gustafsson Prize (1997) шведского правительства, в 2012 году стал членом американского математического общества.