1. Make dulce de leche: 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.
2. 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 325°F.
3. 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.