Although this hearty dish involves several steps, most can be done a couple of days in advance. Prepare and refrigerate the béchamel, covered, up to 2 days ahead. Refrigerate the mushroom-sweet potato mixture and the spinach mixture separately for up to 2 days.
To prepare béchamel, lightly spoon flour into dry measuring cups; level with a knife. Place flour in a Dutch oven, and gradually add milk, stirring with a whisk. Add 1/2 cup onion, sage, shallots, 1/2 teaspoon salt, and bay leaf. Bring the mixture to a boil; cook 1 minute or until thick. Strain béchamel through a sieve over a bowl, and discard solids. Set the béchamel aside.
To prepare the filling, heat 1 1/2 teaspoons olive oil in a large nonstick skillet over medium-high heat. Add 2 1/2 cups onion and garlic; sauté 3 minutes. Add 1/2 teaspoon salt and spinach; sauté 2 minutes or until spinach wilts. Set aside.
Combine 1 1/2 teaspoons oil, 1/2 teaspoon salt, mushroom, and sweet potato on a jelly roll pan coated with cooking spray. Bake at 450° for 15 minutes.
Combine cheeses; set aside.
To prepare noodles, soak noodles in warm water in a 13 x 9-inch baking dish 5 minutes. Drain.
Spread 3/4 cup béchamel in bottom of a 13 x 9-inch baking dish coated with cooking spray. Arrange 3 noodles over béchamel; top with half of mushroom mixture, 1 1/2 cups béchamel, and 1/3 cup cheese mixture. Top with 3 noodles, spinach mixture, 1 1/2 cups béchamel, and 1/3 cup cheese mixture. Top with 3 noodles, remaining mushroom mixture, 1 1/2 cups béchamel, and 3 noodles. Spread remaining béchamel over noodles. Bake at 450° for 20 minutes. Sprinkle with remaining cheese; bake an additional 10 minutes. Let stand 10 minutes before serving.