Butter and flour an 8-inch square or round baking pan (a bundt pan also works well).
Preheat oven to 350°F.
For the streusel: In a small skillet or saucepan melt the butter over medium-low heat and add dessicated coconut and walnuts. Cook, stirring occasionally for 8-10 minutes, or until coconut and walnuts start to get toasty and smell fragrant. Be careful not to burn. Remove from heat and stir in brown sugar and cinnamon and empty half this mixture into the bottom of your prepared baking pan. Reserve other half.
For the cake: In a small bowl, whisk together eggs, coconut milk, liqueur and orange zest. Set aside.
In a large mixer bowl, cream butter with sugar for 5 minutes, or until light in color and fluffy. You may need to scrape down the sides and bottom of bowl a couple of times with a spatula. Add baking powder, baking soda, vanilla extract, salt, cinnamon, ginger, cardamom, nutmeg and cloves.
Add flour, alternately with wet ingredients (egg, etc.) until blended through. You may need to scrape down the sides and bottom of bowl a couple of times with a spatula.
Pour 3/4 s of the batter into your prepared pan and layer with reserved streusel mixture. Pour remaining batter over top and run knife through pan, marbling streusel into the batter.
Bake for approximately 1 hour and 20 minutes, or until a wooden toothpick inserted into the centre of the cake comes out clean. Allow to cool 20 minutes before removing from pan.