Cook the pasta only to firm-tender (don't overcook, as the pasta will cook more when baked in the oven) according to package directions (omit the salt in the water); drain, set aside.
In a heavy-bottomed saucepan, melt the butter over med-high heat.
Add in the chopped onion (if using) and the garlic; saute for 5 minutes.
Whisk in the flour, thyme, nutmeg and black pepper; cook for 2 minutes, stirring constantly.
Gradually whisk in the half and half; cook for 4 minutes, until thick and bubbly.
Add in the grated Swiss cheese, and the Parmesan cheese; mix well over low heat, until the cheese has melted, and the sauce is hot and bubbly; remove the saucepan from the heat.
In a large bowl, combine the cream/cheese sauce, 1/2 cup of the remaining Swiss cheese (it is not necessery to add the remaining 1/2 cup cheese, you may omit if desired), chopped tomato, and the spinach; stir well.
Spoon the mixture into a prepared greased baking pan.
In a small bowl, combine the breadcrumbs, melted butter and the Parmesan cheese.
Sprinkle the mixture over the casserole in the baking pan.
Bake for 30 minutes, or until hot and bubbly.
Note: this recipes calls for NO salt, as the grated Parmesan cheese produces enough salty taste, but if you do choose to add salt, add just a small amount (to taste with the cream sauce) at a time, otherwise it tends to get too salty.