Place a pizza stone in oven and preheat oven to 475 degrees.
Heat 1 Tbsp olive oil in a large skillet over medium-high heat. Add spinach and saute just until wilted. Transfer to several layers of paper towels and squeeze some of the excess liquid from spinach, set aside.
Add another 1 Tbsp olive oil to skillet and set over medium heat. Add onions, season lightly with salt and saute 10 minutes. Add sugar and cook until they begin to caramelize, about 5 - 10 minutes longer, adding a few tbsp water as needed to prevent them from drying and burning. Stir in balsamic vinegar and cook 1 minute longer, set aside.
Shape pizza dough into a 12-inch round over a lightly floured surface, leaving a larger rim around edge of dough for crust. Brush top with remaining 1 Tbsp olive oil and let rest 10 minutes.
In a small saucepan, melt butter over medium heat. Add flour and garlic and cook, stirring constantly, 1 minute. While whisking, slowly pour milk into flour mixture. Season with salt and pepper to taste and bring mixture just to a boil stirring constantly then remove from heat.
Spread white sauce evenly over pizza, leaving crust uncoated. Top with half of the mozzarella and half of the parmesan, then add spinach, bacon and onions. Top with remaining half of the mozzarella and parmesan. Using a pizza peel, transfer pizza to preheated pizza stone and bake in preheated oven 8 - 12 minutes until cheese is melted and crust is golden.