En principe si sur les deux iPhones, tu as le même compte, il te suffit de sauvegarder via iTunes ton 3GS et ensuite restaurer ta sauvegarde sur le 4. Pour info, un même compte évitera des erreurs éventuelles. Ensuite le 4 doit avoir une version iOS égale ou supérieur. Avec une version inférieure de l'iOS sur le 4, cela ne fonctionnera pas sauf erreur.
Et pour finir, préfère utiliser iCloud pour tes contacts ou autres, cela sera plus simple de mon avis pour certaines données.
Tu as également iBackupBot qui fait cela très bien et proprement. Voici le tuto
ici. Il te permettra de restaurer des données comme les appels, SMS/MMS et autres.
N'hésite pas si tu as une question. Tiens nous informé