Spray three 6” cake pans with nonstick cooking spray and line them with parchment rounds. Preheat the oven to 325 F (162 C). Sift together the flour, baking soda, baking powder, cinnamon, ginger, and salt in a medium bowl and set aside.
In the bowl of a stand mixer, combine the sugar and oil, and beat with a paddle attachment until well-mixed. Add the eggs one at a time, beating well after each addition, then add the vanilla extract. With the mixer on low, add the dry ingredients and mix until just a few streaks of flour remain. Add the carrots, coconut, and pecans, and finish mixing by hand. Scrape down the bottom and sides of the bowl with a spatula to make sure everything is well-mixed.
Divide the batter equally between the three cake pans. If you have a scale, you’ll use about 22 oz of batter for each pan. Bake the cakes at 325 F for 50-60 minutes, until they spring back lightly when touched and a toothpick inserted into the center comes out clean. Cool the cakes on a wire rack for 15 minutes, then turn them out of the cake pans to cool completely. Cakes can be made several days ahead of time and kept, well-wrapped, in the refrigerator or freezer until ready to use.
To Make the Coconut Cream Cheese Buttercream:
Combine the egg whites and the granulated sugar in the bowl of a large stand mixer, and whisk them together. Choose a small saucepan that lets you fit the base of the stand mixer snugly into the top of the saucepan—this is your makeshift hot water bath. (Alternately, you can use a different bowl or an actual bain marie and then transfer the mixture to a mixing bowl once it’s heated.) Add an inch of water to the bottom of the saucepan, and bring the water to a simmer.
Place the mixing bowl on top of the saucepan, making sure that the bottom isn’t in contact with the water, and heat the egg white mixture. Whisk frequently so that the egg whites don’t cook. Continue to heat the whites until they are hot to the touch, and when you rub a bit between your fingers, you don’t feel any grittiness from the sugar. Once the whites are hot, transfer the mixing bowl to your mixer and fit it with a whisk attachment.
Beat the whites on high speed until they are no longer warm to the touch—feel the outside of the bowl, and make sure that it is around room temperature. Depending on your mixer and the temperature of your environment, this may take 10-20 minutes, or more. Reduce the speed to medium-low and add the softened but cool butter in small chunks, a tablespoon at a time, making sure to wait in between additions. It may separate or look a little gloopy at this point—fear not. Once all of the butter is added, increase the speed again and whip until it comes together and is light and fluffy. If, after 5 minutes, it hasn’t come together, refrigerate the mixing bowl for 5-7 minutes, to cool the mixture down, and whip it again.
Once the buttercream is finished, transfer it to a bowl, and place the softened but cool cream cheese in the mixing bowl (no need to wash it out first.) Beat the cream cheese with a paddle attachment on medium speed, just until it is creamy and free of lumps. Turn the mixer speed to low and add the buttercream gradually, scoop by scoop, until it’s mixed into the cream cheese and your frosting is smooth. Add a teaspoon of coconut extract, and the powdered sugar, and mix again. Taste the frosting, and if you desire more coconut flavor, or more sweetness, add more extract and sugar to taste. Chill the frosting until you’re ready to use it. It can be made several days in advance.
I find it easiest to work with carrot cakes when they’re partially frozen, so before you are ready to use them, freeze them for about 30 minutes so that they are firm but not frozen throughout. (If they have been stored in the freezer, partially defrost them.) Use a large serrated knife to cut each round in half, so you have 6 cake rounds.
Set 1 cake round on a cardboard cake circle. Top it with about 1/2 cup of frosting, and spread it out to the sides with an offset spatula. Add another frosting round on top, then top that with more frosting. Continue to layer the cake rounds with frosting, until all 6 layers are stacked. Spread a very thin layer of frosting on the outside and top of the cake. Wrap the outside of the cake with plastic wrap, and use your hands to press the cake layers straight and to straighten it if it has started tilting in any direction. Chill the cake for about an hour, so that it is firm and solid. (This step can be skipped if your cake and frosting are cool to start with, but it is helpful if your kitchen is warm and your cake starts to tilt or slide during assembly.)
While you wait for the cake to firm up, prepare the flaked coconut, if you’ll be using it. Separate out about 1 cup of coconut, and put the rest on a baking sheet. Preheat the oven to 325 F, and toast the coconut until it is a very light golden color, 5-7 minutes. Remove another cup of coconut, and toast for about 5 minutes more, until it is a medium golden color. Remove another cup of coconut, and toast the remaining coconut until it is dark brown. You should now have 4 batches of coconut, ranging from white to dark brown. Cool completely.
When your cake is firm, spread a thicker layer of frosting on the sides and top. It doesn’t have to be perfectly smooth, since you’ll be covering it with coconut. Hold the cake in one hand, and use the other to press a layer of dark brown coconut around the bottom of the cake. Next press the medium brown coconut in a layer above the dark brown, and continue working your way up the cake, gradually adding lighter coconut, until you’re pressing a layer of white coconut at the top of the cake. Do the same effect on top of the cake.
Fit a pastry bag with a star tip, and fill it with some frosting. Pipe decorations on top of the cake, if desired. This cake keeps very well, and can be stored for up to a week in the refrigerator.