Faits:
A. A.a B._ était inscrit au registre du commerce comme associé-gérant de la société X._, qui est entrée en liquidation le 30 janvier 2003. Le 27 janvier 2003, il a demandé à la Caisse cantonale genevoise de chômage (ci-après : la Caisse) de lui allouer des indemnités journalières de chômage. Il a produit un contrat de travail attestant son engagement par X._ en qualité de comptable, à partir du 3 janvier 2001, pour un salaire mensuel brut de 5790 francs versé treize fois par an, ainsi qu'une lettre du 10 décembre 2002 par laquelle son employeur résiliait les rapports de travail pour le 31 janvier 2003. Par décision du 28 août 2003, la Caisse a rejeté la demande de prestations au motif que sa perte de travail n'était pas contrôlable.
B._ s'est opposé à cette décision en précisant qu'il n'avait pas reçu l'intégralité de son salaire pendant les années 2001 et 2002 en raison des difficultés financières de son employeur. Les montants non perçus avaient été régulièrement inscrits au passif du bilan de la société et sa créance avait été intégralement réglée en janvier 2003, en liquide, contre remise d'une quittance à l'employeur. Il n'était pas en mesure de produire de pièces justificatives. Par décision sur opposition du 16 juillet 2004, la Caisse a maintenu son refus d'allouer des prestations, en considérant que le demandeur n'avait pas apporté la preuve du versement effectif d'un salaire pendant une période de cotisation de six mois.
A.b Saisi d'un recours contre cette décision sur opposition, le Tribunal des assurances sociales du canton de Genève l'a rejeté par jugement du 17 août 2005. Le Tribunal fédéral a partiellement admis le recours interjeté contre ce jugement, par arrêt du 23 janvier 2007, et a renvoyé la cause à la Caisse pour instruction complémentaire et nouvelle décision. Il a considéré que la preuve du paiement effectif d'un salaire n'était pas une condition du droit aux prestations et qu'il convenait plutôt de vérifier si le recourant avait ou non exercé une activité soumise à cotisation de janvier 2001 à fin janvier 2003.
A.c A réception de l'arrêt du 23 janvier 2007, la Caisse a demandé à B._ de produire tout document comportant sa signature établi dans le cadre de l'activité professionnelle alléguée, de janvier 2001 à janvier 2003 (correspondance comptable avec les fournisseurs, bons de commande, copies de chèques pour le paiement de factures, etc.). Elle a lui a également demandé de produire la liste des employés de l'entreprise de janvier 2001 à décembre 2002, ainsi que d'identifier les signatures sur différents documents établis pour le compte de la société. L'intéressé n'a pas donné suite à cette requête, malgré deux prolongations du délai qui lui avait été imparti. Par décision du 19 octobre 2007 et décision sur opposition du 27 juin 2008, la Caisse a rejeté à nouveau sa demande de prestations.
B. B._ a recouru contre la décision sur opposition du 27 juin 2008 devant le Tribunal des assurances sociales du canton de Genève, en alléguant qu'il lui était impossible de produire les documents demandés par la Caisse. En effet, il n'était plus associé de X._, qui n'avait d'ailleurs plus d'activité ni d'administrateur. En outre, il n'avait été associé qu'à titre fiduciaire, comme « homme de paille », de sorte qu'il ne pouvait pas identifier les signatures qui lui avaient été soumises, hormis la sienne, sur un document.
La juridiction cantonale a rejeté le recours par jugement du 9 juillet 2009.
C. B._ interjette un recours en matière de droit public contre ce jugement. Il en demande l'annulation et conclut principalement, sous suite de dépens, à la condamnation de l'intimée au paiement d'indemnités journalières pour la période courant dès le 1er avril 2003, calculées sur un gain assuré de 4200 fr. brut par mois « au moins ». A titre subsidiaire, il conclut au renvoi de la cause à la juridiction cantonale pour nouvelle décision, sous suite de dépens.
L'intimée conclut au rejet du recours, alors que le Secrétariat d'Etat à l'économie a renoncé à se déterminer.

Considérant en droit:
1. Le litige porte sur le droit du recourant à des indemnités journalières de l'assurance-chômage, plus précisément sur le point de savoir s'il remplit les conditions relatives à la période de cotisation (<ref-law>). Les premiers juges ont constaté, à cet égard, que l'exercice, par le recourant, d'une activité salariée au service de X._ n'était pas établi, ce que conteste le recourant.
2. 2.1 Le Tribunal fédéral est lié par les faits constatés par les premiers juges (<ref-law>), à moins qu'ils aient été établis de façon manifestement inexacte ou en violation du droit au sens de l'<ref-law>. Dans ce cas, il peut rectifier ou compléter les faits d'office (<ref-law>). La partie recourante peut également contester des constatations de faits ainsi irrégulières si la correction du vice peut influer sur le sort de la cause (<ref-law>). Aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (<ref-law>).
2.2 Le recourant a produit plusieurs pièces à l'appui de son recours en instance fédérale. Celles qui ne figuraient pas déjà au dossier de la juridiction cantonale constituent des moyens de preuve nouveaux et ne résultent pas de la décision de l'autorité précédente. Elles ne sont pas recevables dans la présente procédure.
2.3 Le recourant soulève le grief de violation du droit d'être entendu, garanti par l'art. 29 al. 2 Cst. Il n'explique toutefois pas en quoi les premiers juges auraient violé ce droit, par exemple en refusant d'administrer une preuve pertinente qu'il aurait proposée en instance cantonale. En réalité, il semble plutôt leur reprocher d'avoir procédé à une appréciation erronée des preuves figurant au dossier ou d'avoir renoncé à compléter d'office l'instruction du cas, ce qui ne relève pas du droit d'être entendu. Le grief est donc mal fondé.
2.4 Le recourant soulève le grief de violation du principe de libre appréciation des preuves (art. 61 al. 1 let. c, deuxième phrase LPGA). Rien n'indique, toutefois, que les premiers juges n'ont pas librement apprécié les preuves dont ils disposaient. Ils n'ont pas, notamment, écarté d'emblée l'une ou l'autre preuve en se fondant sur un critère strictement formel, sans examiner plus concrètement sa valeur probante. Sur ce point également, le recours est mal fondé.
2.5 Le recourant soutient que les pièces au dossier établissent le versement d'un salaire par X._, notamment en démontrant le paiement d'impôts calculés sur la base de ce salaire, ainsi que de cotisations sociales. En outre, il devait nourrir sa famille, de sorte qu'il lui était impossible de demeurer sans salaire depuis début 2001 jusqu'à janvier 2003, son épouse n'exerçant pas d'activité lucrative.
Sur ce point, l'argumentation du recourant revient à reprocher aux premiers juges une constatation manifestement inexacte des faits, sur la base d'une appréciation arbitraire des preuves figurant au dossier. Toutefois, dans l'arrêt du 23 janvier 2007 par lequel le Tribunal fédéral a renvoyé la cause à l'intimée pour instruction complémentaire et nouvelle décision, celui-ci a considéré - il disposait à l'époque d'un plein pouvoir d'examen en fait (consid. 1 de l'arrêt cité et art. 132 OJ) - que le versement effectif d'un salaire n'avait pas été démontré (consid. 6.1). Il n'y a pas lieu de revenir sur cette constatation, d'autant que le recourant ne soulève aucun argument nouveau et n'a produit aucune nouvelle pièce en vue d'établir le paiement effectif de son salaire.
2.6 Le recourant soulève le grief de violation de l'obligation d'instruire la cause d'office (art. 61 al. 1 let. c, première phrase LPGA). Il reproche aux premiers juges de n'avoir pas administré d'office des preuves relativement simples en vue de vérifier s'il avait ou non exercé une activité soumise à cotisation. La juridiction cantonale aurait ainsi négligé d'interroger « des proches » du recourant ou des employés de X._. Elle s'est limitée à constater qu'il n'avait pas donné suite aux demandes de l'intimée, alors même qu'il lui était impossible de retrouver les documents exigés qui n'étaient plus en sa possession.
Sur ce point également, le grief est mal fondé. L'intimée a rappelé à juste titre, devant les premiers juges, que le recourant n'avait jamais précisé de manière crédible quelle était exactement son activité pour X._. Il avait dans un premier temps allégué une activité de comptable, mais il s'est par la suite avéré que les comptes de la société étaient tenus par une fiduciaire en 2001 et 2002. En outre, il n'avait pas pu reconnaître les signatures apposées sur plusieurs documents établis pour la société (attestation de salaire, courrier de licenciement), ce qui est surprenant de la part du comptable de l'entreprise. Dans ces circonstances, les premiers juges pouvaient considérer qu'il appartenait au recourant, en vertu de son obligation de collaborer à l'instruction, d'indiquer clairement quelle était son activité et, s'il estimait qu'un témoin pouvait l'établir, d'en demander expressément l'audition. Ils n'étaient pas tenus de rechercher au dossier la liste des employés de la société ou des proches du recourant et de les citer d'office comme témoins afin de vérifier si l'un ou l'autre d'entre eux pouvait apporter des précisions sur ce point. Quant aux documents comptables requis par la caisse, le recourant ne semble pas avoir tenté de les obtenir auprès des repreneurs de X._ ou des personnes chargées de sa liquidation, ce qui était pourtant raisonnablement exigible de sa part. Il n'a apporté aucune preuve de ses recherches dans ce sens.
3. 3.1 Compte tenu de ce qui précède, l'ensemble des griefs soulevés par le recourant sont infondés. En particulier, les premiers juges pouvaient, sans procéder à une appréciation arbitraire des preuves ni violer leur obligation d'instruire la cause d'office, considérer que l'exercice d'une activité soumise à cotisation n'était pas établi, sur la base des pièces figurant au dossier. Partant, ils ont nié à juste titre le droit du recourant aux prestations de l'assurance-chômage, au motif qu'il ne remplissait pas les conditions relatives à la période de cotisation.
3.2 Le recourant voit ses conclusions rejetées, de sorte qu'il supportera les frais de procédure, ainsi que ses propres dépens (art. 66 al. 1 et 66 al. 2 LTF).

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté.
2. Les frais judiciaires, arrêtés à 500 fr., sont mis à la charge du recourant.
3. Le présent arrêt est communiqué aux parties, au Tribunal cantonal des assurances sociales de la République et canton de Genève et au Secrétariat d'Etat à l'économie.
Lucerne, le 2 août 2010
Au nom de la Ire Cour de droit social
du Tribunal fédéral suisse
Le Président: Le Greffier:
Ursprung Métral