If you ascend slowly, releasing air from your BCD when needed, you can maintain neutral buoyancy from the bottom to the surface. If you are neutrally buoyant, then you can use your breathing control to enable a very slow and controlled ascent.
Remember that you are not using the BCD itself to ascend. Your journey from the bottom to the surface is essentially just one long 'hover'... you should only be gently using your fins to propel you slowly upwards.
Most novice divers find it difficult to predict the expansion of air in their BCDs as they get shallower. This expansion of air is more dramatic if the diver is heavily (over) weighted, as they will have more air in their BCD to compensate for the weight... and hence more air to expand.
For this reason it is vital to achieve proper weighting. Any surplus weight carried equates to more air in the BCD...and a more difficult to control ascent.
The typical BCD carries 13kg (30lbs) to 20kg (45lbs) of buoyancy. Most experienced divers rarely use a fraction of that capacity during the dive itself.
Make sure that you are familiar with the direct correlation between pressure (depth) and the volume of gas in your BCD. You can Google/Wiki 'Boyle's Law' to get a better understanding of this principle.
Basically, pressure is directly proportional to volume. Any air in your BCD at the bottom, will expand on ascent...as its volume increases proportionally in line with the reduction in pressure. Also be aware that the pressure reduces more and more dramatically as you get nearer the surface. This can catch novice divers out...especially in the final 5-10m (15-30ft).
During the final 10m (30ft) the volume of any air in your BCD wil double. If you are over-weighted, this can mean that you will have to dump a substantial amount of air.
For instance, if you were at 10m (30ft) and had 5 litres (approx 5kgs/11lbs buoyancy) of air in your BCD - that air would expand to 10 litres (approx 10kgs/22lbs buoyancy) by the time you got to the surface. It is hard to resist the 'pull' of 22lbs of positive buoyancy! You must dump that extra air as it expands.
Obviously, you can see that the benefit to proper weighting here... because if you only had 1 litre of air (approx 1kg/2lbs buoyancy) in your BCD, then it would only expand to 2 litres (approx 2kg/4.5lbs buoyancy) by the time you surfaced. The impact of air expansion is minimized and you have to dump less volume of air.
Basic tips:
1) Get your weighting perfected. Any surplus weight needs to be compensated by more air in your BCD, which exagerates the impact of air expansion on ascent.
2) Start your ascent in proper neutral buoyancy. Briefly pause your ascent every 5-10m (15-30ft) to confirm that your are still neutrally buoyant.
3) Be aware that air expansion in your BCD becomes more pronounced the shallower you get.
4) Be aware that expansion in your wetsuit material also contributes to your increasing buoyancy as you get shallower.
5) Use lung/breath control to fine-tune your buoyancy. Breath deeper to move upwards. Breath shallower to slow your ascent.
6) Only dump air from your BCD when necessary. At any given moment on your ascent, you should be able to stop and hover effortlessly.
7) Dump air slowly, and only when necessary, to maintain neutral bouyancy. Release air from your BCD in tiny increments and allow a pause, because the change in buoyancy can take a second or more to happen.
8) You should never have to add air to your BCD on ascent. If you accidentally dump too much air, then use lung/breath control as your first response. Fin slowly upwards until the air expands sufficiently to achieve neutral buoyancy again.
9) Utilise a safety stop to ensure that you have achieved neutral buoyancy in the final stages of ascent. This is the perfect time to ensure that you can hover effortlessly. Be aware that air expansion is dramatic once you leave your safety stop to journey those final 20ft to the surface.
10) Relax and enjoy. If you are tense and apprehensive during your ascent it will make your lung/breath control more difficult.