Melt butter in a saucepan over medium heat. Add flour and stir to combine to make a roux. Continue to cook and stir, about 2 to 3 minutes. Gradually whisk in milk, mixing well. Continue to whisk mixture and bring to a boil. Reduce heat and simmer, whisking frequently, until sauce is thickened, about 10 minutes. Season with salt, pepper and nutmeg.
Preheat the oven to 375°F (190°C). Grease glass baking dish. Heat oil in large skillet set over medium-high heat. Add garlic. Cook for 1 minute. Add spinach and salt. Cook, stirring occasionally, for 2 to 3 minutes or until just wilted. Cool completely and squeeze dry to remove excess liquid; set aside.
Spread 1/5 of béchamel on the bottom of baking dish. Layer with 3 noodles, 1/3 of each spinach, Gruyere cheese, ham and 1/5 of béchamel. Repeat layers 2 times. Top with remaining 3 noodles and remaining béchamel. Sprinkle evenly with Parmesan cheese.
Bake, covered with foil, for 30 minutes. Remove the foil and bake, uncovered, for an additional 30 minutes or until golden and bubbling. Let stand for 10 minutes before serving.