The first thing you want to do is make sure you're getting the right type of BB. Now I'm assuming it's square taper, well there are 2 types of square taper. There's ISO (Campagnolo, Miche, Sugino NJS stuff etc.) and there's JIS (Shimano, regular Sugino, etc) The thread pattern needs to be the same. This will be something like "English 24x1.27" or something like that.
Then, the BB shell width needs to be the same. You can measure this on your frame easily. 68mm is for most track, road etc. 70mm is for some Italian stuff, 73mm for mountain bikes.
Your crank alone will determine the type of head
As long as the type of head is correct; the combination of your cranks and your rear hub (and to a slight degree, your cog) will determine your spindle length. This is the "complicated" part.
Your frame alone will determine you BB shell width.
Then, finally, you need to achieve the proper chainline by getting the right length of spindle. If you have a chainline of 42mm, as on a track bike with rear 120mm spacing, you will generally need about a 103-109mm spindle length, depending on your cranks. If you have road cranks, they have a wider chainline. If you have road spacing in the rear, you need a wider chainline, so if you're using a road spaced fixed gear/SS hub with a 46mm chainline, you'd need a bigger BB.
Think of this example: let's say you have a crank that would achieve a "track" 42mm chainline with a standard track BB spindle length of 103mm. BUT let's say you want to use that crankset on a road spaced bike, and you have something like a Surly 130mm hub. Well, you could use that crank, but you need the chainline to be 4mm outboard of track standard. So you need 8mm wider BB spindle length. So you would get a 111mm BB.
If you mix ISO with JIS square tapers things get different. They are slightly different shapes and the cranks will either slide on less than they should or more than they should. Look it up on Sheldon Brown's website.
Last edited by stomppow; 07-29-09 at 06:30 PM.