Coarsely grate courgettes. Place in a clean tea towel and squeeze out as much moisture as possible. Set aside.
Preheat oven to 180°C / 160°C fan / Gas 4. Grease and line two 20cm sandwich tins.
Whisk sunflower oil, eggs, caster sugar, and vanilla together for 2 minutes until slightly thickened.
Sift in flour, baking powder, cinnamon, mixed spice, nutmeg, and salt. Add lemon zest. Fold gently until just combined.
Fold in squeezed courgette and chopped walnuts until evenly distributed.
Divide equally between tins. Bake for 30–35 minutes until golden and a skewer comes out clean.
Cool in tins 10 minutes. Turn out onto wire rack. Cool completely.
Beat butter alone for 3 minutes until pale. Add cream cheese, icing sugar, lemon zest, lemon juice, and vanilla. Beat until just smooth.
Sandwich sponges with half the frosting. Spread remainder on top. Decorate with walnut halves and lemon zest.