In a small saucepan over medium-low heat, combine butter, brown sugar, and water. Stir occasionally until butter melts and sugar dissolves. Simmer for 1-2 minutes, stirring constantly. Pour hot caramel into a 9x13 inch baking dish, tilting to coat the bottom evenly. Set aside to cool slightly.
If using fresh peaches, peel and slice into thin wedges, discarding pits. If using canned peaches, drain well and pat dry with paper towels. Arrange peach slices evenly over the caramel layer in the baking dish.
Lay the bread slices over the peaches in a single, slightly overlapping layer, covering the entire dish. If using very fresh bread, let sit out for 30 minutes or toast lightly before assembling.
In a large mixing bowl, whisk eggs until combined. Add milk, vanilla, half of the cinnamon, and salt. Whisk until smooth and pale yellow with no streaks of egg white.
Slowly pour the custard mixture over the bread, working in sections so it soaks in. Gently press down with a spoon so every slice makes contact with the custard. Sprinkle the remaining cinnamon over the top.
Cover the baking dish tightly with plastic wrap or a lid. Refrigerate for at least 6 hours, or overnight for 8-12 hours for best texture.
Remove dish from refrigerator and let sit on the counter for 20-30 minutes while oven preheats to 350°F. Cover loosely with foil and bake for 30 minutes. Remove foil and bake for another 15-20 minutes until golden brown and center is set. If using pecans, scatter on top during the last 10 minutes of baking.
Let the baked French toast rest for 5-10 minutes before serving. Scoop servings with a large spoon, ensuring each portion includes caramel and peaches from the bottom. Dust with powdered sugar and drizzle with warm maple syrup before serving.