Faits:
A. Le 12 août 2009, A._ a été arrêté et placé en détention préventive dans le cadre d'une instruction ouverte contre lui pour injures (<ref-law>) et menaces (<ref-law>), sur plaintes de B._. Cette cause a été jointe à une autre instruction ouverte pour violence ou menace contre les autorités et les fonctionnaires (<ref-law>) sur plainte de l'Office du Tuteur général du canton de Vaud. Le Juge d'instruction de l'arrondissement du Nord Vaudois en charge de l'enquête (ci-après: le juge d'instruction) a en outre inculpé l'intéressé d'infraction et de contravention à la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (LStup; RS 812.121).
B. Le 15 mars 2010, le juge d'instruction a rejeté une demande de mise en liberté présentée par A._. Par ordonnance du 23 mars 2010, il l'a renvoyé devant le Tribunal correctionnel de la Broye et du Nord Vaudois sous les chefs d'accusation susmentionnés. Statuant sur recours du prénommé, le Tribunal d'accusation du Tribunal cantonal du canton de Vaud (ci-après: le Tribunal d'accusation) a confirmé le refus de mise en liberté par arrêt du 30 mars 2010. Il estimait qu'il existait des présomptions du culpabilité suffisantes et que le maintien du recourant en détention était justifié par un risque de récidive. Il relevait à cet égard que l'inculpé avait déjà été condamné pénalement à cinq reprises, la dernière fois le 11 juin 2009 à une peine privative de liberté d'un an dont six mois avec sursis. Il se fondait en outre sur une expertise psychiatrique du 27 janvier 2010, qui concluait à l'existence d'un risque de récidive.
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'ordonner sa mise en liberté immédiate. Il conclut subsidiairement à sa mise en liberté moyennant des conditions à fixer par l'autorité, plus subsidiairement au renvoi de la cause à l'autorité précédente pour nouvelle décision au sens des considérants. Il requiert en outre l'assistance judiciaire. Le Tribunal d'accusation et le Procureur général du canton de Vaud renoncent à se déterminer et se réfèrent aux considérants de l'arrêt attaqué.

Considérant en droit:
1. Les décisions relatives au maintien en détention avant jugement sont des décisions en matière pénale au sens de l'<ref-law> (cf. <ref-ruling> consid. 1.1 p. 273). Formé en temps utile (<ref-law>) contre une décision prise en dernière instance cantonale (<ref-law>) et qui touche le recourant dans ses intérêts juridiquement protégés (art. 81 al. 1 let. a et b ch. 1 LTF), le recours est recevable.
2. Une mesure de détention préventive n'est compatible avec la liberté personnelle, garantie par les art. 10 al. 2 Cst. et 5 CEDH, que si elle repose sur une base légale (art. 31 al. 1 et 36 al. 1 Cst.), soit en l'espèce l'art. 59 du Code de procédure pénale du canton de Vaud du 12 septembre 1967 (CPP/VD; RSV 312.01). Elle doit en outre correspondre à un intérêt public et respecter le principe de la proportionnalité (art. 36 al. 2 et 3 Cst.; <ref-ruling> consid. 2c p. 270). Pour que tel soit le cas, la privation de liberté doit être justifiée par les besoins de l'instruction, un risque de fuite ou un danger de collusion ou de réitération (cf. art. 59 al. 1 ch. 1, 2 et 3 CPP/VD). La gravité de l'infraction et l'importance de la peine encourue ne sont, à elles seules, pas suffisantes (<ref-ruling> consid. 3a p. 62; <ref-ruling> consid. 4a p. 70). Préalablement à ces conditions, il doit exister à l'égard de l'intéressé des charges suffisantes, soit de sérieux soupçons de culpabilité (art. 5 par. 1 let. c CEDH; <ref-ruling> consid. 3 p. 144 s.; art. 59 al. 1 in initio CPP/VD). S'agissant d'une restriction grave à la liberté personnelle, le Tribunal fédéral examine librement ces questions, sous réserve toutefois de l'appréciation des faits, revue sous l'angle restreint des art. 97 al. 1 et 105 al. 2 LTF (<ref-ruling> consid. 2.5 p. 73 s. et les références citées).
3. Dans un premier grief, le recourant conteste l'existence de charges suffisantes.
3.1 Pour qu'une personne soit placée en détention préventive, il doit exister à son égard des charges suffisantes ou des indices sérieux de culpabilité, c'est-à-dire des raisons plausibles de la soupçonner d'avoir commis une infraction. Il n'appartient cependant pas au juge de la détention de procéder à une pesée complète des éléments à charge et à décharge et d'apprécier la crédibilité des personnes qui mettent en cause le prévenu. Il doit uniquement examiner s'il existe des indices sérieux de culpabilité justifiant une telle mesure. L'intensité des charges propres à motiver un maintien en détention préventive n'est pas la même aux divers stades de l'instruction pénale; si des soupçons, même encore peu précis, peuvent être suffisants dans les premiers temps de l'enquête, la perspective d'une condamnation doit apparaître vraisemblable après l'accomplissement des actes d'instruction envisageables (<ref-ruling> consid. 3c p. 146; GÉRARD PIQUEREZ, Traité de procédure pénale suisse, 2e éd., 2006, p. 540 et les références).
3.2 En l'espèce, le recourant ne conteste pas les infractions à la LStup et à l'<ref-law> qui lui sont reprochées. Il allègue toutefois qu'il n'existe aucun indice suffisant pour retenir les charges de menaces et d'injures. Selon lui, les accusations portées par B._ devraient être écartées, car elles ne seraient corroborées par aucun élément probant.
En remettant en cause la version des faits de la prénommée, le recourant perd de vue qu'il n'appartient pas au juge de la détention de faire une véritable appréciation de la crédibilité des témoignages à charge; il lui appartient uniquement de vérifier que le maintien en détention avant jugement repose sur des indices de culpabilité suffisants. Or, les déclarations de la plaignante en question constituent des indices parmi d'autres et elles peuvent être prises en compte dans la mesure où elles n'apparaissent pas d'emblée invraisemblables, compte tenu notamment des antécédents du recourant. Au demeurant, le maintien en détention repose sur plusieurs autres chefs d'accusation que le recourant ne conteste pas, de sorte qu'il y a lieu d'admettre qu'il existe des charges suffisantes à son encontre.
4. Le recourant conteste également l'existence d'un risque de récidive. Il soutient en substance que les faits dont l'autorité redoute la réitération ne sauraient être qualifiés de graves et il prétend qu'il faut relativiser les conclusions de l'expertise psychiatrique.
4.1 Selon la jurisprudence, le maintien en détention préventive se justifie s'il y a lieu de présumer, avec une certaine vraisemblance, qu'il existe un danger de récidive. Il convient de faire preuve de retenue dans l'appréciation du risque: le maintien en détention ne peut se justifier pour ce motif que si le pronostic est très défavorable et que les délits dont l'autorité redoute la réitération sont graves (<ref-ruling> consid. 2.2 p. 276; <ref-ruling> consid. 3a p. 62; <ref-ruling> consid. 2c p. 270 et les arrêts cités).
4.2 En l'occurrence, l'expertise psychiatrique à laquelle le recourant a été soumis conclut sans équivoque à l'existence d'un risque de récidive, ce risque étant même qualifié d'élevé. Les experts considèrent que la pathologie psychiatrique dont souffre le recourant est grave, dans la mesure elle n'est pas reconnue par l'intéressé, qui ne se remet pas en question. Par ailleurs, contrairement à ce que le recourant semble croire, les actes qu'on lui reproche ne sont pas anodins. En effet, les éléments qu'il reconnait dénotent déjà un niveau d'agressivité verbale élevé, des menaces de mort ayant été proférées dans des circonstances sensibles ayant trait à la prise en charge de son enfant et de la mère de celui-ci. L'expertise psychiatrique relève à cet égard que le recourant craint de perdre son fils et qu'il devient particulièrement agressif lorsque des mesures de placement sont évoquées par l'autorité. Pour le surplus, il y a également lieu de prendre en compte les antécédents de l'intéressé, qui a déjà été condamné notamment pour lésions corporelles simples qualifiées et pour violation de la LStup. En définitive, c'est à bon droit que le Tribunal d'accusation a admis l'existence d'un risque de récidive.
5. Le recourant se plaint enfin d'une violation du principe de la proportionnalité, au motif que la durée de la détention préventive serait excessive au regard de la peine encourue.
5.1 En vertu des art. 31 al. 3 Cst. et 5 par. 3 CEDH, toute personne qui est mise en détention préventive a le droit d'être jugée dans un délai raisonnable ou d'être libérée pendant la procédure pénale. Une durée excessive de la détention constitue une limitation disproportionnée de ce droit fondamental, qui est notamment violé lorsque la durée de la détention préventive dépasse la durée probable de la peine privative de liberté à laquelle il faut s'attendre. Dans l'examen de la proportionnalité de la durée de la détention, il y a lieu de prendre en compte la gravité des infractions faisant l'objet de l'instruction. Le juge peut maintenir la détention préventive aussi longtemps qu'elle n'est pas très proche de la durée de peine privative de liberté à laquelle il faut s'attendre concrètement en cas de condamnation (<ref-ruling> consid. 4.1 p. 170; <ref-ruling> consid. 4.1 p. 27; <ref-ruling> consid. 2 et 3 p. 257 ss et les références).
5.2 En se fondant uniquement sur les infractions qu'il admet avoir commises, le recourant prétend que la détention subie à ce jour dépasse la peine encourue. Il perd ainsi de vue que d'autres charges pèsent sur lui et que c'est au juge du fond qu'il appartiendra de statuer sur celles-ci. Pour rappel, le recourant est renvoyé en jugement devant le Tribunal correctionnel pour injures (<ref-law>), menaces (<ref-law>), violence ou menace contre les autorités et les fonctionnaires (<ref-law>) et infraction et contravention à la LStup. Compte tenu de l'ensemble de ces charges, de la relative gravité de certaines accusations et des mauvais antécédents du recourant, les quelque neuf mois de détention subis à ce jour sont encore compatibles avec la peine encourue concrètement en cas de condamnation. Pour le surplus, le recourant a été renvoyé en jugement par ordonnance du 23 mars 2010, de sorte qu'il n'apparaît pas que sa détention préventive doive se prolonger au delà de la durée admissible. Cela étant, l'instruction étant terminée, il conviendra de fixer dans les plus brefs délais l'audience de jugement afin de ne pas rallonger cette détention.
5.3 Evoquant sommairement "d'autres mesures" que la détention préventive, le recourant demande sa libération "aux conditions que justice dira". Il se plaint donc implicitement d'une violation de la proportionnalité au motif que des mesures moins incisives que la détention pourraient être envisagées. Il ne fournit cependant aucune motivation sur ce point et il ne mentionne même pas les mesures qui pourraient être mises en oeuvre. Au demeurant, on ne voit pas d'emblée quelles mesures pourraient se substituer à la détention préventive pour pallier le risque de récidive existant en l'espèce et il n'appartient pas au Tribunal fédéral d'investiguer d'office sur ce point.
6. Il s'ensuit que le recours doit être rejeté. Dès lors que le recourant est dans le besoin et que ses conclusions ne paraissaient pas d'emblée vouées à l'échec, l'assistance judiciaire doit lui être accordée (<ref-law>). Le recourant requiert la désignation de Me Donovan Tésaury en qualité d'avocat d'office. Il y a lieu de faire droit à cette requête et de fixer d'office les honoraires de l'avocat, qui seront supportés par la caisse du Tribunal fédéral (<ref-law>). Le recourant est en outre dispensé des frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté.
2. La demande d'assistance judiciaire est admise.
3. Il n'est pas perçu de frais judiciaires.
4. Me Donovan Tésaury est désigné comme défenseur d'office du recourant et ses honoraires, supportés par la caisse du Tribunal fédéral, sont fixés à 1'500 fr.
5. Le présent arrêt est communiqué au mandataire du recourant, ainsi qu'au Procureur général et au Tribunal d'accusation du Tribunal cantonal du canton de Vaud.
Lausanne, le 18 mai 2010
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président: Le Greffier:
Féraud Rittener