How do I stop apps from installing themselves to my SD-card?
Thanks to this answer to this question Is moving apps to SD only available to rooted devices?.

I've discovered the getInstallLocation ADB command and set the install location to internal on my un-rooted phone.

With the Android SDK installed, and my phone connected via USB with USB Debugging mode switched on, enter the following commands:

adb devices
(check that ADB can see my phone, and start necessary services)

adb shell
(connects a shell to the phone)

pm getInstallLocation
(returns 0[auto])

pm setInstallLocation 1
(sets the default install location to internal memory)

pm getInstallLocation
(run again to check that it is now set to the correct location, returns 1[internal])

exit

Safely Remove Hardware, unplug phone and all done, without any need for root!