I don't know of a free solution, though there may be one.
I do know of Autostarts, currently just under 1 USD, a pretty good price in my opinion. It gives you a list of applications that have attached themselves to different events in the Android OS (I'm not an Android programmer, my wording is likely wrong there). You can then choose to disable that association without actually removing or disabling the application. For your Yahoo startup example -- With Autostarts you can prevent it from launching on startup, but it will still be accessible for you to launch at your leisure later on.
Forgot to mention - this does require root. A bit of searching seems to confirm that there is no way to disable startup apps without root - your only option in that case would be uninstalling them.
I also stumbled on a manual process that I've never personally tried -- You can do what Autostarts does by issuing some shell commands (ADB or Terminal Emulator app).
su pm disable <package name>/<package name>.<activity name>
I believe that would translate to something like:
su pm disable com.yahoo.mobile.client.android.im/com.yahoo.mobile.client.android.im.android.intent.action.BOOT_COMPLETED
But I've never tried this myself.