Your proposal will work, and it's not quite as bad as you fear. I've used Seagate Disk Wizard for cloning. What you need to know is that, when it clones from one drive to another, a "Drive" is a partition (volume) with a letter name like D:. It is NOT a whole hard drive physical unit.
Here are the tricks you need to know and use.
1. Install Disk Wizard on your existing C: drive and run from there; do not run it from the CD. The reason is support for large (over 137 GB) hard drives. If you run from a CD, Disk Wizard has no way to know whether your OS has "48-bit LBA Support" built in to allow HDD volumes over 137 GB. (By the way, to do this you need your XP to be updated to at least SP1 - I suspect you have that already since you are using a big drive, but make sure before you start!) Anyway, Disk Wizard will default to refusing to make any Partition over 137 GB unless it knows otherwise. The best way for it to know is if it is installed along with your OS - then it will allow large partitions.
2. XP has a way to expand a partition to include other unused space on a HDD unit, but it will NOT do that for the boot partitiion. What you plan will get around that, I think.
3. The first thing you'll do is run Disk Wizard to clone the C: drive (that is, the partition called C: on your old HDD) to the new HDD. In setting that up, check through the menus carefully. The simple default setting is that it will use up ALL of the new drive to make on huge volume containing the clone, and that is what you don't want. There is a place where you can specify that the clone copy on the new HDD will only occupy a specified size, so make that somewhat bigger than needed. For example, if your C: drive now is 130 GB and it has 90 GB of space used, have the clone partition at least 100 GB, maybe more. Make sure you also tell it to make this into a bootable drive. It will establish and format a bootable partition on the new HDD of the specified size, then copy absolutely everything from current C:. Note that the clone does NOT have the same size as the original - it is the size you specified it should be. And note that there still is no clone of your D: drive. When it's done you could actually shut down, swap cables, and restart with the new HDD as your boot device from the new C: drive, but DON"T do that yet. In this case we still have another drive to clone.
4. Reboot the machine and you should find the original C: and D: drives, plus a new E: or something that contains the clone. If you go into Windows Disk Manager you'll see that the new HDD has this drive on it, plus a bunch of unallocated space.
5. Run Disk Wizard again, but be very careful here. What you will do is clone your old D: drive to the unallocated space on the new HDD. So your source is the existing D: drive. The destination is the unallocated space on the new HDD, and this is where you must be very careful. Be sure you tell it the correct HDD unit to use as destination. Biggest clue will be in the size - your new destination probably should include all of the unallocated space, and that may be nearly 400 GB. Make this clone. When you're finished the new HDD will contain two volumes (partitions), each with a clone of your old drive's C: and D: paritions.
6. Shut down and swap cables. Reboot and you should have C: and D: as the new paritions on the new HDD - check the sizes to be sure they are identified correctly. You also should have two other drives that really are the two partitions (formerly C: and D:, now newly renamed) on the old HDD. If you are happy that the new clones are all working as they should you can proceed to wipe out the old HDD and re-use it.
7. Use Windows Disk Manager (or Disk Wizard) to delete both paritions on the old HDD. Now use Disk Wizard to clone the new C: drive you made back to the old HDD unit, but this time tell it to make only one volume using all of the 300 GB available. Again, ensure the clone is set to be bootable. When this is done you can shut down and swap cables again. This will put you in the position that the original 300 GB HDD is the bootable C: drive, and the new 500GB HDD has two partitions on it. One is a clone of your original C:, and one is a clone of your original D:.
8. Boot up and check. C: drive should be 300 GB nearly. Well, Windows will call this something like 280 GB, but that's because of the way it defines a GB - you really are NOT missing any space. The D: drive will be the clone of your original C:, and the E: drive will be the clone of your original D:. OK so far? Then we can get rid of that D: clone of C: and reallocate it all.
9. Use Windows Disk Manager to delete the D: drive that is the first partition on the new 500 GB HDD unit. Now you're left with only one active partition containing the original D: drive, and it is NOT a bootable drive volume. You should be able to get Windows to expand that volume to include all the space on the 500 GB unit. Once that's done, reboot and check. You should have one C: drive of nearly 300 GB, and a D: drive of nearly 500 GB, and no unallocated space on either HDD unit. Make sure the drive names are the way you want them - C: and D:.
10. At this point it might be a good idea to run a defragmentation on the D: drive to ensure it puts everything in a nice orderly location on the 500 GB unit. That could take a while, so be prepared to have it spend hours doing the job.