Heat oven to 350 degrees. Place the flour and icing sugar in a large bowl, and give a quick stir. Chop the softened butter into chunks and drop them into the flour/sugar mixture. With a beater (I actually made mine using the paddle attachment on my Kitchen Aid) or a spoon, mix everything together until it takes on a dry, sandy consistency, but holds in a ball when you press some together in your hand.
Grease an 8" x 8" pan well with butter, or line with parchment. Dump the shortbread into the bottom of the pan, then press it into the pan with a spoon or the back of your hand until it's even and well-packed. Prick the shortbread with a fork. Bake for around 20 minutes, or until the shortbread is golden on the edges.
Remove from oven and allow to cool slightly.
Dump the dulce de leche into a pan on top of the stove over medium-high heat. Bring to a boil, and then allow to cook for about 5 minutes until it thickens, whisking to keep it from coagulating. Remove from the stove and pour over the shortbread layer.
Place a small pot with a couple inches of water over medium heat, and bring to a low boil. Over that, place a heat-proof bowl (meal or pyrex) and put both chocolates in the bowl. Allow the chocolate to melt, stirring occasionally. Add a little of the milk at a time (you may not need all of it) until the chocolate is a smooth, runny consistency. You want it to be able to flow onto your caramel layer, but not be so thin that it won't set up upon cooling. Sprinkle the top with a little fleur de sel.
Place the entire pan of bars in the fridge to set for several hours.
To serve, remove from the pan, and cut into squares.