Preheat the oven to 450 degrees F. Spray a large, rimmed baking sheet (18-by-13 inches).
Melt the butter in a large sauté pan over medium heat. Add the onions and cook, stirring occasionally, until lightly caramelized, 15 to 20 minutes; if the onions are browning too quickly, reduce the heat to low. When the onions are almost done, stir in the garlic and cook an additional 2 minutes to lightly toast. Remove from the heat.
Shingle half of the potatoes in 6 or 7 even rows on the prepared baking sheet, making sure the sheet is completely covered. Season the potatoes with salt and pepper, and sprinkle with half of the fontina and Parmesan. Next, evenly spread the caramelized onions over the top; place the sauté pan back on the stovetop and reserve for later. Shingle the remaining half of the potatoes over the onions, and season with more salt and pepper.
Turn the heat to medium under the sauté pan. Add the cream, rosemary, Dijon and lemon zest, stir together and bring to a simmer. Season with salt and then pour the cream over the potatoes; tilt the baking sheet slightly in all directions to ensure even coverage. Top with the remaining fontina and Parmesan.
Cover the baking sheet with foil and bake for 15 minutes. Remove the foil and continue baking until the top is golden brown, the edges are crispy and the potatoes are tender, another 20 to 25 minutes. Let the cool for 15 minutes before serving.