Николай Харитонов родился 30 октября 1948 года в селе Резино Новосибирской области. Окончил Новосибирский сельскохозяйственный институт. С 1972 по 1994 год работал агрономом, директором совхоза «Галинский» Мошковского района Новосибирской области.
В 1990 году избран народным депутатом РСФСР. Входил во фракцию «Аграрный союз», депутатский блок «Народное единство». Состоял в Социалистической партии трудящихся. В 1993 году участвовал в создании Аграрной партии России, был избран заместителем председателя Михаила Лапшина. Избирался депутатом Государственной Думы всех восьми созывов, при этом на выборах 1993—2003 годов по одномандатному Барабинскому округу Новосибирской области.
В 1995 году окончил Академию народного хозяйства при правительстве Российской Федерации.
На президентских выборах 1996 года поддерживал кандидатуру Геннадия Зюганова.
19 декабря 1999 года был избран депутатом Государственной Думы третьего созыва по списку КПРФ под номером 9. В Думе возглавил Агропромышленную депутатскую группу. В мае 2000 года пленум центрального совета АПР принял решение приостановить членство Харитонова в руководящих органах партии, так как он выступил резко против отхода Аграрной партии России от сотрудничества с КПРФ. Николай Харитонов стал одним из руководителей Аграрно-Промышленного Союза России, который объединил прокоммунистические аграрные круги.
7 декабря 2003 года в очередной раз избран депутатом Государственной Думы четвёртого созыва по Барабинскому одномандатному избирательному округу № 124 (Новосибирская область). Вошел в состав фракции КПРФ. Занял пост первого заместителя председателя Комитета по аграрным вопросам.
На съезде партии КПРФ выбран единым кандидатом от партии на президентских выборах в марте 2004 года. При тайном голосовании в его поддержку высказались 123 участника съезда, а Геннадия Семигина поддержали 105 участников. По итогам выборов занял 2 место и 9,4 млн голосов избирателей (13,69 % голосов).
В 2007 году вышел из Аграрной партии России, по причине активного сотрудничества этой партии с «Единой Россией».
Вошёл в общефедеральный список КПРФ под третьим номером на Думских выборах 2007 года. 29 ноября 2008 года стал членом КПРФ на XIII съезде, а 30 ноября избран членом Президиума ЦК КПРФ.
В 2011 году вновь избран депутатом Государственной Думы шестого созыва, в которой он возглавил комитет по региональной политике и проблемам Севера и Дальнего Востока Госдумы шестого созыва. Член ПАСЕ.
В 2008 году имидж политика был изрядно испорчен нашумевшей историей с автомобильной аварией, после которой КПРФ не стала включать его в избирательный список на выборах в Новосибирске. Возглавлял региональные избирательные списки (субъектовые тройки) в Республике Марий Эл (октябрь 2009 года), Республике Алтай (март 2010 года), Оренбургской области (март 2011 года).
В Государственной Думе VI созыва представлял Краснодарский край.
На выборах в Государственную думу Федерального Собрания РФ VII созыва (2016 год) баллотировался по 52 Армавирскому одномандатному избирательному округу, Краснодарский край, и был избран депутатом. Член фракции КПРФ, вновь возглавил Комитет по региональной политике и проблемам Севера и Дальнего Востока.