Preheat oven to 350F. Butter a 9 inch loaf pan, and line with parchment paper if desired for easy removal.
Add the butter and sugar to the bowl of an electric mixer fitted with the paddle attachment. Beat on medium-high speed for 4-5 minutes until pale and fluffy.
Add the eggs and beat for another 30 seconds to 1 minute. Add the molasses and beat briefly to combine.
Add the salt, spices, baking powder, and baking soda, and mix briefly to combine.
Finally, add in the flour, and mix just until everything is incorporated. I like to finish mixing by hand with a silicone spatula to make sure everything from the sides and bottom of the bowl is well incorporated.
Pour the batter into the prepared baking pan and bake for about 60-65 minutes. This cake doesn't rise into a domed shape like some pound cakes, but it should be a deep gingerbread-y color when done. If the top of the cake is getting too dark before it's done cooking, cover with a small piece of foil.
Remove the cake from the oven and allow to cool partially in the pan before removing to cool fully on a baking rack.
While the cake is cooling, make the frosting by adding all of the frosting ingredients to the bowl of a food processor and blending until smooth. If you'd like a thicker/stiffer frosting, you can add more powdered sugar. If you'd like a tangier frosting, you can add a bit of lemon juice.
When the cake is fully cool, frost with a thick layer of cream cheese frosting. You'll have enough frosting for a very generous layer that will fall down the sides of the cake a bit. You can use less if you'd like it to just stay on top of the cake, or even make a half recipe of the frosting if you'd like a thinner layer.