Pick over spinach to remove and discard any stems and blemished leaves. Rinse the spinach thoroughly and shake off excess water. There should be about 2 pounds of cleaned weight or 16 cups.
In an 8-quart pot bring enough water to cover spinach, seasoned with 2 teaspoons salt, to a boil. Add spinach to the boiling water and cook, just until the spinach is wilted, about 1 minute.
Transfer spinach to a colander set over the sink. Run cold running water over spinach until spinach is chilled. Press spinach against the side and bottom of the colander to extract the water. Then use your hands, and squeeze out as much liquid as possible.
Roughly chop the spinach into about 3/4 inch pieces; set aside.
Melt the butter (4 tablespoons) in a 12-inch skillet and sauté onions (1/2 cup) and shallots (2 tablespoons), over medium-low heat, until the onions are translucent, about 8-10 minutes. Add in garlic (4 cloves), stirring constantly, until garlic softens and becomes fragrant, about 1 minute.
Sprinkle flour (1/4 cup) over the cooked onion mixture, and whisk until a thick paste is formed. Cook, whisking frequently, until the paste becomes a light golden brown color, at least one minute. Remove the skillet from heat.
Pour the half-and-half (3 1/2 cups) into the skillet, whisking rapidly. Continue whisking as the roux gently bubbles and the paste is incorporated with no lumps in the mixture. Do not allow the roux to bubble too vigorously, or it will burn rather than brown.
Add in the cream cheese (8 ounces) and Parmesan (1/2 cup), stirring to accelerate the melting process. Cook for 5-7 minutes, stirring frequently, until the mixture is smooth and the cheeses are melted.
Stir in nutmeg (1/2 teaspoon), allspice (1 pinch), Cajun seasoning (1/2 teaspoon), salt (3/4 teaspoon), and pepper (1/2 teaspoon).
Stir in spinach gently tossing to combine and coat the spinach evenly with sauce. Heat through, adjust seasoning to your taste and serve.