Fill a pot with 3 quarts water and bring to boil, Add 2 teaspoons salt and the rice and stir. Cover and simmer for 15 minutes, stirring occasionally. Drain and transfer to a mixing bowl. Toss rice with a bit of butter to keep it from sticking together.
While rice is cooking, make the bechamel sauce. Heat milk until hot, but do not boil. Melt 4 tablespoons in heavy saucepan over medium-low heat. Add flour and whisk until smooth. Add hot milk a few tablespoons at a time, whisking until mixture is smooth before adding more milk. Keep adding milk gradually until all milk is added. Sauce will be thin but will thicken the longer it cooks. Season with salt and pepper to taste before removing from heat.
Pour all but a few spoonfuls of bechamel sauce over rice and mix well. Add ham and all but 2 tablespoons parmigiano-reggiano cheese. Salt and pepper to taste.
Spray casserole dish with cooking spray. Spread half of rice mixture in bottom of casserole. Sprinkle layer with mozzarella cheese, and then spread remaining half of rice mixture over the cheese. Carefully pour remaining bechamel sauce over the top and spread evenly. Sprinkle with remaining parmigianno-reggiano cheese. Place in oven to cook for 15 minutes. If cheese doesn't turn golden brown, place under broiler for a few minutes until cheese starts to brown.
Remove from oven and let sit 5 minutes before serving.