Remove the zest from the oranges and set the rest of the oranges aside. Pour the milk and cream into a pan, add the orange zest, split vanilla pod and crushed cardamoms and bring to the boil. Turn off the heat and leave to infuse for one hour.
Preheat the oven to 180C/350F/Gas 4 and place a large roasting tin inside to warm up. The tin should be large enough to hold a 30 x 22 x 5cm/12 x 9 x 2in baking dish with space remaining around the edge.
Butter the bread and cut it into triangles. Segment the oranges with a sharp knife and discard the peel. Remove the translucent outer skin from each segment, and discard. Slice each segment in half. Beat the eggs and sugar together in a mixing bowl. Pour the infused milk through a fine sieve onto the egg mixture.
Arrange a layer of bread, buttered-side up, in the baking dish, then add a layer of pistachio pieces, sultanas and orange segments. Repeat the layers, finishing with the bread and making the final layer overlap neatly. Pour the milk-and-egg mixture over the top. Put on a kettle of water to boil.
Place the dish in the roasting tin in the oven. Carefully pour boiling water into the roasting tin to come halfway up the sides of the dish, taking care not to allow any of the water to go into the pudding. Bake for 30-40 minutes, or until nearly set through.
Heat the strained marmalade in a small pan over a gentle heat until liquid, and use to brush the top of the bread and butter pudding. To serve, scoop out each portion and dust with icing sugar, plus a dollop of crème fraîche if you like.