Place bread cubes in a large bowl. Pour 1 cup milk over the bread and mix to coat. Set aside.
Heat a large (6 quart) saucepan over medium heat and add the butter. When the butter has melted, add the apricot and ginger. Cook, stirring constantly, for 1 to 2 minutes. Stir in the salt.
Add the remaining cup of milk along with the cardamom, cinnamon, nutmeg, and sugar. Continue to heat until the sugar dissolves, about 2 to 3 minutes.
Pour the apricot milk mixture the apricots into a blender or food processor and process so that there are only very small chunks of apricot remaining.
Add the vanilla and remove from heat to thoroughly cool.
Once the milk mixture is cool, whisk in the eggs until well combined. Add the softened bread cubes and toss thoroughly so the bread is soaked through. Set aside for 20 minutes to allow the bread to absorb more liquid.
Preheat the oven to 350°F. Butter or spray a 9-inch by 5-inch loaf or terrine pan with cooking spray. Pour the bread mixture into the pan, pushing down gently with a rubber spatula to tightly pack. (Some of the milk may rise to the top of the pan).
Cover the loaf pan with tin foil and place it in a larger baking dish and put in the preheated oven. Pour hot water into the larger baking dish until it rises about halfway up the side of the loaf pan.
Bake until the pudding does not jiggle when shaken, about 35 minutes. Remove foil and cook 10 minutes more then remove from the oven and cool until only slightly warm.