Faits: Faits: A. A._, ressortissant suisse né le 14 juin 1963, a été arrêté et placé en détention préventive le 28 mars 2003 dans le cadre d'une procédure pénale ouverte contre lui des chefs notamment de faux dans les titres, d'escroquerie, d'abus de confiance, de gestion déloyale et de banqueroute frauduleuse. Il est soupçonné d'avoir remis en sous-location des locaux auxquels il n'avait plus aucun droit et d'avoir détourné les loyers encaissés, par le biais de diverses sociétés américaines; pour induire les sous-locataires en erreur, il aurait présenté un bail principal falsifié et se serait prétendu l'avocat des propriétaires. Il lui est aussi reproché d'avoir détourné à son profit un prêt bancaire de deux millions de francs consenti à l'une des sociétés qu'il gérait. A._ a sollicité à plusieurs reprises sans succès sa libération provisoire auprès de la Chambre d'accusation du canton de Genève (ci-après: la Chambre d'accusation ou la cour cantonale), puis du Tribunal fédéral. Dans un arrêt rendu le 12 février 2004, celui-ci a confirmé l'existence de charges suffisantes à l'encontre du prévenu en relation avec les infractions dénoncées et le maintien de la détention préventive en raison des risques de fuite et de collusion (1P.32/2004). Le 12 novembre 2004, le Juge d'instruction en charge de la procédure a sollicité une prolongation de la détention préventive de A._ d'une durée de trois mois afin de procéder à deux audiences de témoins prévues les 30 novembre et 13 décembre 2004; il invoquait en outre les risques de collusion, de fuite et de réitération. Le 15 novembre 2004, le prévenu a requis sa mise en liberté provisoire. Par ordonnance du 16 novembre 2004, la Chambre d'accusation a autorisé la prolongation de la détention préventive de A._ pour une durée de deux mois en raison des risques de collusion et de fuite. Vu sa précédente décision du 17 septembre 2004, dans laquelle elle laissait entendre qu'en l'absence de faits nouveaux importants, l'instruction devrait pouvoir se terminer dans le courant du mois de novembre 2004, elle a estimé que le principe du respect de la proportionnalité commençait à se poser et qu'une libération provisoire assortie de mesures propres à écarter le risque de fuite pouvait entrer en considération. Elle a ainsi ordonné la mise en liberté provisoire de A._, moyennant le versement d'une caution de 100'000 fr. en espèces, à charge pour lui de se présenter à tous les actes de la procédure aussitôt qu'il en sera requis. Par ordonnance du 16 novembre 2004, la Chambre d'accusation a autorisé la prolongation de la détention préventive de A._ pour une durée de deux mois en raison des risques de collusion et de fuite. Vu sa précédente décision du 17 septembre 2004, dans laquelle elle laissait entendre qu'en l'absence de faits nouveaux importants, l'instruction devrait pouvoir se terminer dans le courant du mois de novembre 2004, elle a estimé que le principe du respect de la proportionnalité commençait à se poser et qu'une libération provisoire assortie de mesures propres à écarter le risque de fuite pouvait entrer en considération. Elle a ainsi ordonné la mise en liberté provisoire de A._, moyennant le versement d'une caution de 100'000 fr. en espèces, à charge pour lui de se présenter à tous les actes de la procédure aussitôt qu'il en sera requis. B. Agissant par la voie du recours de droit public, A._ demande au Tribunal fédéral d'annuler cette décision, de prononcer sa liberté provisoire sans conditions, le cas échéant, d'assortir celle-ci des conditions qu'il lui plaira de fixer, à l'exception de toute sûreté ou caution. Il invoque une violation des art. 8, 9, 10, 29 al. 2, 31 et 32 al. 1 Cst. et des art. 5 et 6 § 2 CEDH. Il requiert l'assistance judiciaire gratuite. La Chambre d'accusation et le Juge d'instruction du canton de Genève se réfèrent aux considérants de la décision attaquée. Le Procureur général du canton de Genève conclut au rejet du recours.