Okay, I think I've found a "work-around" for the voice-dialer problem that will allow you to use it hands-free.
In the marketplace, download TopVoiceControl - TopVoiceControl v1.3.0 Application for Android | Tools
The first time you launch it, it will ask which voice dialer you want to be your default. Press the checkmark box for Make Default, and choose TopVoiceControl (you can change this back later by "clearing" the default in Settings > Applications > Manage Applications).
Now, in Contacts, create some "speed dial" contacts with easy to say names you will remember, and which don't sound too much like other contacts names. I am playing with using "numbers" actually spelled out like "One" and "Two". For example, I created a contact called "One" with my wife's cell phone number and NO other information.
Start TopVoiceControl (it will start up like voice dialer, waiting for you to say something). Press the menu button, this will bring up the settings for TopVoiceControl. Check the box next to "Act on single result".
(Note: while you are in the settings you may also want to turn off text-to-speech, which is on by default, because to use this you need to download another app or package or something, and it will keep nagging you until you download it, or until you disable it in settings. I haven't tried it yet).
Now, provided your voice "speed dial" contact name is a unique sounding name that is not too hard to pronounce, it should be the only result found when you say it, and TopVoiceControl will initiate the call right away.
It is important to remember that you have to say "Call" before the contact name, or it will search for apps as well.
I tested this using my Motorola BT ear piece and it worked well. It is important to speak loudly, clearly, and enunciate well so that TVC only finds the one result to call. Play around with names/words that sound very distinct from the other contacts and app names on your phone.