Faits:
A. Le 3 juin 2009, A._ a été arrêté et placé en détention préventive dans le cadre d'une instruction pénale dirigée contre lui pour infraction à l'art. 19 ch. 1 et 2 de la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (LStup; RS 812.121). De sérieux soupçons de trafic d'héroïne pesaient sur l'intéressé, pour des quantités dépassant très largement la notion du cas grave au sens de l'<ref-law>.
Le 3 juillet 2009, le Juge d'instruction de La Chaux-de-Fonds a rendu une ordonnance de confirmation de la détention préventive de A._. Par arrêt du 31 juillet 2009, la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel a rejeté le recours de l'intéressé contre l'ordonnance précitée. Elle a considéré pour l'essentiel que de sérieuses présomptions de culpabilité subsistaient à l'encontre de A._, qu'il existait un danger de collusion et que le risque de fuite ne pouvait être écarté. A._ a contesté cet arrêt devant le Tribunal fédéral, qui a rejeté son recours par arrêt du 24 septembre 2009 (cause 1B_240/2009). Dans cet arrêt, la Cour de céans a notamment constaté qu'il existait des charges suffisantes à l'encontre du recourant et que le Tribunal cantonal n'avait pas abusé de son pouvoir d'appréciation en retenant l'existence d'un risque concret de fuite.
Par ordonnance du 20 novembre 2009, le Procureur général du canton de Neuchâtel a renvoyé A._ devant la Cour d'assises du canton de Neuchâtel (ci-après: la Cour d'assises) pour infractions graves à la loi fédérale sur les stupéfiants.
B. Le 22 décembre 2009, A._ a présenté une requête de mise en liberté. Par décision du 5 janvier 2010, le président de la Cour d'assises a rejeté cette requête. Il a retenu l'existence de sérieuses présomptions de culpabilité et a considéré que le risque de fuite était évident, la garantie proposée par l'intéressé n'étant pas suffisante pour éviter ce risque. A._ a recouru contre cette décision auprès de la Cour de cassation pénale du Tribunal cantonal du canton de Neuchâtel (ci-après: le Tribunal cantonal), qui a rejeté ce recours par arrêt du 9 février 2010. En substance, les juges cantonaux ont constaté l'existence de sérieuses présomptions de culpabilité et ils ont considéré que le risque de fuite n'était pas remis en cause de manière convaincante et que la garantie aux fins de sûretés proposée par A._ était insuffisante.
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é. Subsidiairement, il conclut au renvoi de la cause à l'autorité précédente. Il requiert en outre l'assistance judiciaire. Le Ministère public conclut au rejet du recours. Le Tribunal cantonal a renoncé à se déterminer, mais il a relevé que l'audience de jugement devant la Cour d'assises avait été fixée au 27 avril 2010. Le recourant n'a pas présenté d'observations complémentaires dans le délai qui lui a été imparti à cet effet.

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 les art. 117 et 119 du code de procédure pénale neuchâtelois du 19 avril 1945 (CPP/NE; RSN 322.0). La mesure de détention 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. <ref-law>/NE). La gravité de l'infraction - et l'importance de la peine encourue - n'est, à elle seule, pas suffisante (<ref-ruling> consid. 3a p. 62; <ref-ruling> consid. 4a). 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; arrêt 1B_63/2007 du 11 mai 2007 consid. 3 non publié in <ref-ruling>; art. 117 al. 1 in initio CPP/NE). 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 preuves, revue sous l'angle restreint de l'arbitraire (<ref-ruling> consid. 2.1 p. 186; <ref-ruling> consid. 2d p. 271).
3. Le recourant ne discute plus le caractère suffisant des charges pesant sur lui, puisqu'il reconnaît que "l'existence de présomptions suffisantes est difficilement contestable". En revanche, il remet en cause l'existence d'un risque de fuite et il reproche au Tribunal cantonal d'avoir omis d'examiner les garanties proposées pour pallier ce risque.
3.1 Le risque de fuite doit s'analyser en fonction d'un ensemble de critères tels que le caractère de l'intéressé, sa moralité, ses ressources, ses liens avec l'Etat qui le poursuit ainsi que ses contacts à l'étranger, qui font apparaître le risque de fuite non seulement possible, mais également probable (<ref-ruling> consid. 4a p. 70 et la jurisprudence citée). La gravité de l'infraction ne peut pas, à elle seule, justifier la prolongation de la détention, même si elle permet souvent de présumer un danger de fuite en raison de l'importance de la peine dont le prévenu est menacé (<ref-ruling> consid. 3a p. 62; <ref-ruling> consid. 4a p. 70, 108 Ia 64 consid. 3 p. 67). Conformément au principe de la proportionnalité, lorsque le maintien en détention est motivé uniquement par le risque de fuite, il convient en principe d'examiner les possibilités de mettre en oeuvre d'autres solutions moins dommageables que la détention (règle de la nécessité; <ref-ruling> consid. 5.2 p. 438; <ref-ruling> consid. 2c p. 222 et les arrêts cités; cf. également art. 5 par. 3, dernière phrase, CEDH).
3.2 En l'occurrence, comme le Tribunal cantonal l'a relevé, le recourant ne discute plus les différents éléments que la Chambre d'accusation avait retenus pour admettre l'existence d'un risque concret de fuite, ces éléments ayant été contestés en vain devant la Cour de céans (cf. arrêt 1B_240/2009 précité). L'intéressé se borne en effet à alléguer que "son centre d'existence est bel et bien en Suisse", sans aucunement remettre en cause les autres éléments retenus, notamment l'importance de la peine encourue et les liens qu'il a conservés avec le Kosovo, son pays d'origine. Il convient de rappeler à cet égard que des écoutes téléphoniques ont démontré qu'il se rendait régulièrement dans ce pays. De plus, s'il est vrai que l'intéressé a des attaches en Suisse, celles-ci doivent être mises en balance avec la peine privative de liberté encourue, qui pourrait inciter le recourant à faire certains sacrifices pour y échapper. La décision querellée relève en outre que la Cour d'assises devant laquelle est renvoyé le recourant est compétente pour prononcer des peines privatives de liberté supérieures à cinq ans, ce qui n'est pas sans incidence sur le risque de fuite. La possibilité d'une condamnation à une peine significative s'est donc concrétisée avec ce renvoi devant la Cour d'assises, ce d'autant plus que l'audience de jugement aura lieu prochainement.
En définitive, faute d'éléments permettant de remettre en cause l'appréciation de l'autorité intimée, il y a lieu de retenir que le risque de fuite est réalisé. Compte tenu de l'importance de la peine susceptible d'être prononcée si le recourant est reconnu coupable des actes qu'on lui reproche et de la proximité de l'audience de jugement, ce risque peut être qualifié d'important. A titre de sûretés, le recourant évoque le dépôt d'une cédule hypothécaire, à constituer sur une maison qu'il possède en copropriété avec son épouse, dont il vit séparé. Vu l'importance du risque de fuite au regard des éléments exposés ci-dessus, une telle garantie d'ordre financier n'est pas de nature à assurer la comparution de l'intéressé à l'audience. C'est dès lors à bon droit que le Tribunal cantonal a renoncé à examiner plus avant cette question et il n'a pas violé le principe de proportionnalité en considérant qu'une libération aux conditions proposées par le recourant n'était pas envisageable en l'espèce.
4. 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 Marino Montini 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>).

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 Marino Montini, avocat à Neuchâtel, est désigné comme avocat 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, au Ministère public et à la Cour de cassation pénale du Tribunal cantonal du canton de Neuchâtel.
Lausanne, le 25 mars 2010
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président: Le Greffier:
Féraud Rittener