In a large skillet melt 1/2 cup margarine over medium heat. Stir in onion, chopped tomatoes, and salt; simmer for 1/2 hour.
Meanwhile, in a large pot with boiling salted water cook pasta until al dente. Drain. Place cooked spaghetti in the bottom of a greased 9x13 inch baking dish.
In a small saucepan melt 3 tablespoons of margarine over medium heat. Take off heat and quickly stir in 3 tablespoons of flour to make a paste. Return to heat and slowly stir in the milk. Cook on low, stirring often, until thick. Add heavy cream and continue to cook until slightly thickened.
Pour simmered tomato mix over top of spaghetti. Sprinkle on olive halves and mushrooms. Pour cream sauce on top. Sprinkle with grated Parmesan cheese.
Bake in a preheated 350 degree F (175 degrees C) oven for 30 minutes.