Faits: A. En février 2010, une enquête a été ouverte contre A._ par l'Office de contrôle du Service de surveillance des relations du travail du canton de Neuchâtel (ci-après: le SSRT). Dans un premier temps, cette enquête a été confiée à B._, inspectrice du marché cantonal de l'emploi. Celle-ci a entrepris divers actes d'instruction, accompagnée notamment de C._, alors Conseiller d'Etat du canton de Neuchâtel. A partir de mars 2010, B._ a sollicité du procureur D._ différentes réquisitions, que le procureur a délivrées. Une enquête préalable pour escroquerie aux services sociaux a été ouverte. A._ a entrepris diverses démarches pour contester les méthodes d'enquête de B._ et l'intervention de C._. En juillet 2010, le Procureur général du canton de Neuchâtel est alors intervenu auprès du conseiller d'Etat compétent pour que l'enquête soit confiée à d'autres collaborateurs du service précité. Dès le mois de juillet 2010, A._ s'est opposée à différentes opérations d'enquête menées par le procureur D._ et elle a émis divers griefs à son encontre, sans toutefois requérir sa récusation. Elle a cependant formé une requête en constatation de la nullité de la procédure auprès de la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel (ci-après: la Chambre d'accusation). Rejetant cette requête par arrêt du 1er avril 2011, la Chambre d'accusation a notamment relevé que les critiques relatives au manque d'indépendance et d'impartialité du procureur auraient dû être faites dans une demande de récusation, que l'intéressée avait clairement renoncé à introduire. B. Le 11 avril 2011, A._ a demandé la récusation du procureur D._. Cette requête était notamment motivée par la découverte d'un courrier adressé le 31 janvier 2011 par le procureur à la Chambre d'accusation dans le cadre de la requête en constatation de nullité de la procédure mentionnée ci-dessus. Elle se fondait également sur un courrier du procureur daté du 3 novembre 2010. Par arrêt du 28 juin 2011, l'Autorité de recours en matière pénale du Tribunal cantonal du canton de Neuchâtel (ci-après: le Tribunal cantonal) a rejeté la demande de récusation. Cette autorité a considéré que la requête était manifestement tardive dans la mesure où elle était fondée sur les éléments ressortant du courrier du 3 novembre 2010 et qu'elle était mal fondée en ce qui concerne le courrier du 31 janvier 2011. Le Tribunal cantonal a également rejeté la requête d'assistance judiciaire que l'intéressée avait présentée. C. Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral d'annuler cet arrêt et d'admettre la demande de récusation du procureur D._, subsidiairement de renvoyer l'affaire à l'instance précédente pour nouvelle décision. Elle se plaint d'arbitraire dans la constatation des faits, ainsi que d'une violation de l'art. 56 let. f du code de procédure pénale suisse (CPP; RS 312.0) et de l'art. 29 al. 3 Cst. concernant l'assistance judiciaire. Elle requiert en outre l'octroi de l'assistance judiciaire pour la présente procédure. Le Tribunal cantonal a renoncé à se déterminer. Au terme de ses observations, le procureur D._ conteste devoir se récuser. La recourante a présenté des observations complémentaires.