Родился 30 октября 1948 года в селе Резино Усть-Таркского района Новосибирской области.
В 1972 году окончил Новосибирский сельскохозяйственный институт (ныне — Новосибирский государственный аграрный университет) по специальности «агроном», в 1995-м Академию народного хозяйства при правительстве РФ. Кандидат экономических наук.
После окончания вуза работал агрономом, управляющим отделением совхоза «Большевик» Мошковского района Новосибирской области. В апреле 1976 г. был назначен директором совхоза. Избирался депутатом сельского, районного, областного советов народных депутатов. Был членом КПСС до ее запрета в 1991 году.
В 1990-м избран народным депутатом РСФСР по территориальному округу № 530 (Новосибирская область). Входил во фракцию «Аграрный союз», депутатский блок «Народное единство». Был членом комитета по социальному развитию села, аграрным вопросам и продовольствию.
В феврале 1993 года участвовал в создании Аграрной партии России (АПР), избран зампредседателя партии Михаила Лапшина. Возглавил Новосибирскую областную организацию АПР. Также был председателем Координационного комитета представителей трудовых коллективов агропромышленного комплекса Новосибирской области.
Депутат Государственной думы Федерального собрания РФ всех 8-ми созывов.
12 декабря 1993 года был избран в Государственную думу РФ I созыва от Новосибирской области (Барабинский одномандатный округ № 124). В Думе был заместителем председателя фракции Аграрной партии России, членом парламентского комитета по аграрным вопросам.
17 декабря 1995-го вновь избран в Госдуму РФ II созыва от Аграрной партии России по Барабинскому одномандатному округу № 124 (набрал 36% голосов). Возглавил Аграрную депутатскую группу, был членом думского комитета по аграрным вопросам.
В преддверии очередных парламентских выборов 1999-м в АПР начались разногласия между сторонниками Харитонова, выступавшими за присоединение партии к избирательному списку КПРФ, и сторонниками председателя АПР Михаила Лапшина, которые высказывались за самостоятельное участие партии в выборах. В итоге в АПР произошел раскол: на внеочередном съезде партии было принято решение присоединиться на выборах к блоку «Отечество — Вся Россия». В свою очередь группа Николая Харитонова в знак протеста покинула съезд и заявила о вхождении в блок с коммунистами.
На думских выборах 1999 года Харитонов был включен в общефедеральный список КПРФ, одновременно баллотировался в Госдуму в Барабинском округе № 124 Новосибирской области. 19 декабря 1999 г. был избран депутатом Госдумы III созыва от Барабинского одномандатного округа (53,34%). В Госдуме возглавил Агропромышленную группу и вновь вошел в комитет по аграрным вопросам.
Выступал за сохранение сотрудничества Аграрной партии России с КПРФ. В связи с этим 20 мая 2000 года было приостановлено членство Николая Харитонова в центральном совете АПР.
17 мая 2002 года стал председателем Агропромышленного союза России, который объединил прокоммунистические аграрные организации. Возглавлял союз до июля 2005 года. 31 мая 2003 года снят с руководящих постов в правлении и центральном совете Аграрной партии.
На парламентских выборах 7 декабря 2003-го вновь одержал победу в Барабинском одномандатном округе Новосибирской области (56,4%) и стал депутатом Государственной думы IV созыва. Вошел в состав фракции КПРФ и занял пост первого заместителя председателя думского комитета по аграрным вопросам.
В декабре 2003-го выдвинут КПРФ на выборы президента России: на съезде компартии за Харитонова проголосовали 123 делегата, за его соперника — Геннадия Семигина — 105. На президентских выборах 14 марта 2004 года Харитонов набрал 13,69% голосов и занял второе место среди шести кандидатов на высший государственный пост.
30 июня 2007 года заявил о своем выходе из Аграрной партии России. В том же году 2 декабря был избран в Госдуму РФ V созыва по списку КПРФ (№ 3 в общефедеральной части списка). Был членом фракции коммунистов, первым заместителем председателя комитета по аграрным вопросам.
В ноябре 2008 года вступил в КПРФ и вошел в состав президиума ЦК партии. 4 декабря 2011-го вновь стал депутатом Государственной думы: в парламент VI созыва избран по списку КПРФ от Краснодарского края. Член фракции КПРФ.
С 21 декабря 2011 года — председатель комитета по региональной политике и проблемам Севера и Дальнего Востока. С 18 сентября 2016 года — депутат Госдумы РФ VII созыва от КПРФ. Баллотировался в составе федерального списка партии (возглавлял региональную группу № 1, Республика Адыгея, Краснодарский край) и по Армавирскому одномандатному округу № 52 (Краснодарский край). Был избран по Армавирскому округу, набрав 35,23%. Вновь возглавил комитет по региональной политике и проблемам Севера и Дальнего Востока (с 5 октября 2016 г.). Член фракции КПРФ.
С 2021 г. — депутат Государственной думы РФ VIII созыва. Был избран 19 сентября 2021 г. от партии КПРФ по федеральному округу. Был выдвинут под девятым номером общефедеральной части списка кандидатов от партии, однако после исключения из нее Павла Грудинина фактически баллотировался под восьмым номером.
Полковник ФСБ в запасе.
Награжден орденами Александра Невского (2019), Дружбы (2014). Имеет благодарности президента (2009) и правительства (2019) РФ.
Отмечен медалью «За трудовую доблесть». Заслуженный работник физической культуры РСФСР, заслуженный работник сельского хозяйства РФ.