Preheat oven to 350 degrees.
Melt the butter over medium heat in a saucepan.
Add the flour and cook, stirring, about 2 minutes.
Slowly add the milk while whisking constantly until smooth. Continue to cook, stirring occasionally until thickened, about 5 minutes, do not allow to scorch. Add the salt, black pepper and cheeses, stirring until cheese has melted. Remove from heat.
Thaw spinach by cutting a slit in the top of the bag and microwave on high for 5 minutes. Drain spinach, squeezing to remove excess liquid (a clean kitchen towel works great for this). Coarsely chop the artichoke hearts.
Meanwhile, in a large skillet, fry bacon until crisp. Set bacon aside and pour out all but 1 TBS bacon drippings. Stir in minced shallot and tomatoes until shallots are soft, about 5 minutes. Add garlic stirring for another minute. Add spinach and artichokes, tossing gently. Stir in the sauce until warmed through. Salt and pepper to taste.
Divide mixture evenly between 4 ramekins or oven-proof bowls. Crack an egg into each ramekin, being careful not to break the yolk.
Bake on middle rack until egg whites are firm but yolks are still runny, rotating pan halfway through cooking, 20 - 25 minutes. Crumble a bacon slice over each egg. Allow to cool for a few minutes and enjoy.