Pour condensed milk into a bowl; set over a pot of simmering water. Cook, stirring occasionally, until sauce is very thick and golden brown, about 2 1/2 hours.
Add more water to pot during cooking time, if necessary.
Remove bowl; set aside to cool.
Make pudding: Butter a 9-by-13-inch baking dish.
Spread bread in dish; sprinkle with chocolate. In a bowl, whisk both sugars, cocoa and salt. In a separate bowl, whisk milk, half-and-half and eggs. Dissolve espresso in vanilla; whisk into egg mixture.
Whisk egg mixture into bowl with cocoa mixture.
Pour over bread cubes. Cover loosely; let stand for 1 hour. Preheat oven to 325F.
Remove cover.
Bake pudding until puffed and set in center, 50 minutes to 1 hour. Insert a small knife into center; it should come out clean.
Let stand for 10 minutes.
Drizzle with dulce de leche and serve with ice cream, if desired.