Basically, you can back up everything which has a "data provider" available -- as e.g. contacts, call-logs, SMS, and the like. If you search the playstore for "backup", it will give you a lot of apps for that. One of the best non-root backup solutions for this probably is MyBackup Pro, which covers most of it -- though there are a lot of apps offering to backup/restore parts.
Most other app's data cannot be backed-up, however. Some of them provide possibilities to export their settings (and import them at a later point), others have dedicated backup apps (I remember e.g. something like that for Angry Birds).
For contacts and calendar, there's also the possibility to sync them with your Google account. I would not, however, rely on the "Google backup" for other things, as it is often reported to unsuccessfully restore. For that case, there are extra measures one can take. The easiest would be to logon to AppBrain with your Google credentials, and sync your installed apps. Appbrain then allows you to save that as a list with their service: you can then use this list to restore all apps you put into it -- or you could even send it to a different device (even a different user's device) for a "mass install".
In case you had some apps installed which are no longer available on the playstore, you could also take a look at AppMonster: in its payed (pro) version, it also allows batch-install. Plus, it captures each app you install/update and saves a copy -- which can be useful in the future as well: if some update breaks a functionality, you can ask AppMonster to simply restore a previous (captured) version.
And though this currently does not affect you (as your Android version is lower than 4.0), just to mention for other users (and your possible future device): starting with Android 4.0, there is the possibility for a Full Backup of non-rooted devices (rooted users always have this possibility with Titanium Backup ★ root).
Data stored on your sd card should not be affected by the factory-reset.