1. I only had one card reader so I copied the contents of the old card to a folder on my laptop. Again I could have used the command line for this but I wanted to visually check what I was copying so used Nautilus. I had to use root permissions (gksudo nautilus) to copy sd-ext. Remember in both cases to show hidden files before copying.
2. Using GParted (I find formatting a bit scary so used a GUI) I formatted the new card as follows:
512mb ext3 partition called sd-ext
remainder as fat32 called sdcard
3. Copy the files to the new card.
4. Insert new card and power up phone - perfect first time!
HTC Desire using CyanogenMod 7.0.3-Desire.