You can set the default install location to your SD card. Just be aware that a.) widgets, services and polling apps should always be installed to your phone's internal memory. b.) Any new widgets and services installed after you set the default location must be checked and moved back to internal memory before using them, and c.) Even with the default location set to external memory, some apps will always install to internal memory.
If you've got 2.2 or higher You change the default location to the SD card like this ... (And, once that is changed you can move even more apps to the SD card, even though they were installed to internal memory.)
You'll need to have the Android SDK installed. How-To Install Android SDK On Windows, Mac and Linux
Then on your phone go to settings>applications>development and enable USB Debugging. Plug your phone into the PC using the USB cable.
open a command prompt on your PC (start>run type "cmd" press ENTER)
Change directory to the android-sdk-windows\tools folder
At the prompt type
and you should see your phone listed as a serial number.
adb shell pm setInstallLocation 2
Now the default location to install apps is the SD card. And, some apps that you couldn't move to the SD card will now be able to be moved. If you follow the steps above and you install a widget afterwards, you will need to go to settings>applications>manage applications and manually move it to the phone. If you want to set the default install location back to the phone, you simply repeat the process but use
adb shell setInstallLocation 0