We have quoted (but not yet written) a custom that can do this. Your speed dials would be set up as route points. The name of the route point is the number to dial with commas for pauses. To do the speed dial, simply dial the proper route point.
Sounds pretty basic to develop. We have contacts that don't have DIDs and we need to manually key in their extension number. The whole purpose of CM is to dial automatically, right?