Many skiers suffer shin bang because they buy boots that are too big for them. Most sizing charts that ski boot manufacturers have list sizes comparable to street shoe sizes, where you want a little room between your toes and the boot. However, ski boots, especially those with modern heat-moldable liners, should be sized tighter, similar to the way climbers size rock shoes. After the liner is molded to your foot, it is not uncommon for the boot to feel too big if you have not sized it right. Generally, you should consider sizing down a size from your street shoe size when purchasing ski boots. An experienced bootfitter can help with this.
Once you have found a pair of ski boots that fit well, consider adding a Booster Strap (see resources) to the boot, if your boot doesn't have one. The Booster Strap is used by many professional racers, including Bode Miller, to tighten up the fit at the top of the ski boot. The Booster Strap can go around the inner boot of the ski boot, or be integrated into the shell. The Strap allows the skier to snug up the fit at the top, pulling the Strap tight to ensure there is no space between the shin and the boot.
The final solution for shin bang is to go to a bootfitter and have custom work done on the boot. Custom work includes fitting the boot with a footbed molded to the shape of your foot and arch to hold your knee in a neutral alignment with your foot, the addition of custom molded inner boots to the ski boot instead of the stock boots, and possibly shell work, including shims on the inside of the shell to keep the inner boot from moving around and punching out potential hot spots where bones are squeezed too tightly against the shell of the boot.