I had the same dilemma regarding 16GB vs. 32GB. I have a pretty large music library (over 40GB) and that took up around 15GB in my 32GB 3GS. Ultimately, I could not justify spending another $100 for double the space, so this is what I'm doing:
1. I am syncing only the absolute essential songs to my iPhone. These are the ones I know I'll listen to a lot and wouldn't be able to do without. When I went through my library and did this, I ended up with around 693 songs. I'll revise this as I find new songs I want on there.
2. I have all my music uploaded to Google Music Beta. For those who don't know, it's a free cloud music streaming service that is by invite only (I happen to have 5 free invites, so if anyone wants those, PM me). With the gMusic app from the App store, I have access to my whole 40+ GB library from my iPhone as long as I'm on 3G or WiFi. Unfortunately, Google does not have an official app for the iPhone for Google Music, but gMusic seems to work decently enough.
3. I am using Picasa to upload photos regularly from my iPhone. Again, there's no official app from Google for this, but the Picasa Web Albums app seems to work decently enough. The plan is to delete photos after uploading so as to conserve space whenever I get to the point where I'm out of space. I'm big into photography, and I take a lot of photos with my iPhone so it's essential that I have space to take photos and a place to upload them to (I purchased additional storage from Picasa for $5 per year to accommodate my large photo library). The nice thing about Picasa is that I have access to all my photos from my iPhone, including those that were uploaded and taken with other cameras.
Now, by doing these three things, with 125 applications installed (quite a few of them being games), 693 songs (in 192 quality or higher), and 124 photos, I have 3.4GB of available space. That's more than enough to take a lot of photos, and should be sufficient for videos (unless they're long, in which case I can just upload those photos and clear out space). So far, this is working quite well for me.