Faits:
A. X._ est locataire d'un appartement de 5,5 pièces dans l'immeuble sis, avenue ..., au Grand-Lancy. Le loyer annuel s'élève actuellement à 14'820 fr., charges non comprises. L'échéance du bail est fixée au 30 juin de chaque année.
Le 1er novembre 2006, A._ a acquis, pour un montant de 345'000 fr., l'appartement occupé par X._ lors d'une vente aux enchères à l'Office des poursuites. Par avis officiel du 18 décembre 2006, elle a résilié le bail pour le 30 juin 2007 ou toute échéance valable utile (premier congé).
X._ a contesté le congé. Devant la Commission de conciliation en matière de baux et loyers, A._ a motivé la résiliation par son souhait de revendre l'appartement libre de tout occupant.
A une date indéterminée, B._ a signé une promesse d'achat-vente avec A._ pour un montant de 360'000 fr. Par arrêté du 8 avril 2008, le Département genevois des constructions et des technologies de l'information (DCTI) a autorisé la vente à diverses conditions, notamment celle que l'acheteur reprenne les droits et obligations de la bailleresse envers X._.
Par promesse d'achat-vente du 9 octobre 2008, H.Z._ et F.Z._ ont promis à A._ d'acquérir l'appartement occupé par X._ au prix de 400'000 fr. et se sont engagés à reprendre les droits et obligations du bail en cours. Le DCTI a alors confirmé à la régie en charge de l'immeuble que la teneur de l'arrêté du 8 avril 2008 demeurait inchangée, sous réserve du fait que l'appartement serait finalement acquis par les époux Z._ pour un prix de 400'000 fr.
Les époux Z._ sont devenus propriétaires de l'appartement en date du 9 janvier 2009. Par avis officiel du 24 février 2009, ils ont résilié le bail pour le 30 juin 2009 et indiqué comme motif de congé le "besoin propre des propriétaires" (deuxième congé).
Par arrêt du 18 janvier 2010 - aujourd'hui définitif - rendu dans la procédure relative au premier congé, la Cour de justice du canton de Genève a substitué les époux Z._ à A._, en leur qualité de nouveaux bailleurs, et a confirmé l'annulation de la résiliation prononcée par le Tribunal des baux et loyers.
B. Par requête du 2 avril 2009, X._ a contesté le deuxième congé. Par décision du 20 avril 2010, la Commission de conciliation en matière de baux et loyers a annulé la résiliation.
Les époux Z._ ont saisi le Tribunal des baux et loyers du canton de Genève, concluant à la validité du congé et à l'octroi d'une unique prolongation de bail, d'une durée maximale de deux ans. Ils invoquaient leur besoin urgent d'occuper l'appartement qu'ils avaient acquis dans le but d'y habiter, car le logement qu'ils louaient alors n'était pas compatible avec l'état de santé de F.Z._, qui souffrait notamment de hernies discales et de fibromyalgie.
X._ a conclu à la constatation de l'inefficacité du congé, subsidiairement à son annulation et, plus subsidiairement, à l'octroi d'une prolongation de bail de quatre ans.
Par jugement du 22 juin 2011, le Tribunal des baux et loyers a annulé la résiliation notifiée à X._ le 24 février 2009. En substance, il a jugé que le congé avait été donné pendant une procédure judiciaire au sens de l'art. 271a al. 1 let. d CO (celle sur le premier congé) et que les bailleurs ne pouvaient se prévaloir de l'exception de l'art. 271a al. 3 let. a CO, faute d'avoir rendu vraisemblable le besoin urgent de l'objet litigieux pour eux-mêmes.
Statuant le 5 novembre 2012 sur appel des époux Z._, la Chambre des baux et loyers de la Cour de justice du canton de Genève a annulé le jugement du 22 juin 2011, déclaré valable le congé notifié le 24 février 2009 et renvoyé la cause au Tribunal des baux et loyers pour qu'il statue sur la prolongation de bail. Elle a jugé que la résiliation litigieuse n'était pas un congé extraordinaire au sens de l'art. 261 al. 2 let. a CO, mais bien un congé ordinaire pour une échéance contractuelle; ce congé pouvait en principe être annulé sur la base de l'art. 271a al. 1 let. d CO puisqu'il était intervenu alors qu'une procédure était en cours entre les parties; cependant, les bailleurs avaient établi l'existence d'un besoin urgent de l'appartement pour eux-mêmes de sorte que la résiliation était valable en application de l'art. 271a al. 3 let. a CO.
C. X._ interjette un "recours en matière de droit civil, subsidiairement de droit constitutionnel". Il demande au Tribunal fédéral d'annuler le congé qui lui a été notifié par les époux Z._ en date du 24 février 2009.
H.Z._ et F.Z._ concluent à l'irrecevabilité, subsidiairement au rejet du recours.
X._ a déposé des observations sur la réponse.
Pour sa part, la cour cantonale se réfère aux considérants de son arrêt.
Considérant en droit:
1. Le Tribunal fédéral examine d'office et librement la recevabilité des recours qui lui sont soumis (ATF 138 I 475 consid. 1 p. 476; 138 III 46 consid. 1, 471 consid. 1 p. 475).
Contrairement au Tribunal des baux et loyers, la Cour de justice a déclaré valable le congé du 24 février 2009. Elle a tranché cette question, mais ne s'est pas prononcée sur un autre objet du litige, qui devenait d'actualité en cas de validité de la résiliation, à savoir l'éventuelle prolongation du bail; elle a renvoyé la cause à l'autorité précédente afin qu'elle statue sur cette conclusion. Comme il ne met pas fin à toute la procédure, l'arrêt attaqué n'est pas final (cf. art. 90 LTF). La question se pose dès lors de savoir si la décision entreprise peut tout de même faire l'objet d'un recours au Tribunal fédéral, qu'il soit ordinaire ou subsidiaire (cf. art. 117 LTF).
Le Tribunal fédéral a déjà eu l'occasion de juger qu'une telle décision ne constitue pas une décision partielle au sens de l'art. 91 let. a LTF - contre laquelle le recours serait ouvert - et qui se définit comme une décision statuant sur un objet dont le sort est indépendant de celui qui reste en cause. Dans les cas de ce genre, la cour cantonale se prononce certes sur un chef de conclusion ou une partie du petitum, puisque l'action en annulation du congé et celle en prolongation du bail, qui sont jointes, sont deux actions distinctes, reposant sur des fondements juridiques différents et conduisant à des conclusions différentes. En revanche, le sort des conclusions en jeu n'est pas indépendant puisque la décision sur la validité du congé est le préalable nécessaire à la décision sur la prolongation du bail (arrêt 4A_439/2008 du 12 novembre 2008 consid. 1, extrait in RSPC 2009 p. 186).
Il s'ensuit que l'arrêt attaqué est une décision incidente. Comme elle ne porte ni sur la compétence, ni sur une demande de récusation (cf. art. 92 LTF), une telle décision ne peut faire l'objet d'un recours au Tribunal fédéral que si elle peut causer un préjudice irréparable (art. 93 al. 1 let. a LTF) ou si l'admission du recours peut conduire immédiatement à une décision finale qui permet d'éviter une procédure probatoire longue et coûteuse (art. 93 al. 1 let. b LTF). Le premier terme de l'alternative n'entre manifestement pas en ligne de compte en l'espèce. Par ailleurs, l'examen de la question de la prolongation du bail ne commande pas de procéder à une instruction longue et coûteuse (cf. arrêt précité du 12 novembre 2008 consid. 1 in fine).
Aucune des conditions posées par l'art. 93 al. 1 LTF n'étant réalisée, le recours se révèle irrecevable.
2. Vu le sort réservé au recours, les frais judiciaires seront mis à la charge du recourant (art. 66 al. 1 LTF). Ce dernier n'aura pas à verser des dépens aux intimés, qui ne sont pas représentés par un avocat et n'ont pas fait valoir d'autres frais indispensables occasionnés par le litige (cf. art. 68 al. 2 LTF et art. 1 du règlement sur les dépens alloués à la partie adverse et sur l'indemnité pour la représentation d'office dans les causes portées devant le Tribunal fédéral; RS 173.110.210.3).
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est irrecevable.
2. Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge du recourant.
3. Il n'est pas alloué de dépens.
4. Le présent arrêt est communiqué aux parties et à la Chambre des baux et loyers de la Cour de justice du canton de Genève.
Lausanne, le 19 avril 2013
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente: Klett
La Greffière: Godat Zimmermann