I have done something similar, though it was on a desktop system.
You need: A knoppix disc and suficent familiarity with linux to use it (or a knowlegable friend who can help you), a USB hard drive or network share with 40Gb free space, a borrowed windows install disc.
Boot your laptop from the knoppix disc.
Bring up a command shell as root.
Using the dd command make a copy of the entire partion to your USB drive or network share. Something like:
Code:
dd if=/dev/hda1 of=/mnt/sda1/hard_drive_copy
Where hda1 is the boot partion on your laptop hard drive, and /mnt/sda1 is where your USB drive is mounted. You need to be very carefull to get the command right as if you get the if and of the wrong way round you will trash all your data.
Also use the cfdisk command to look at your partion table, and note down the exact size of that partion, down to the nearest byte.
Once all the data has been copied (it will take at least 10 minutes), shut down your system, install the new drive, and reboot into knoppix again.
Using cfdisk, create a root partion on the new drive that is exactly the same size as the one on the old one. You can partion the rest of the space any way you like, or leave it as unused untill later.
Then using the dd command, copy the data back.
Code:
dd if=/mnt/sda1/hard_drive_copy of=/dev/hda1
Once it has finsihed copying, shutdown and remove the knoppix disc, and attempt to reboot from the new hard drive. If it works, then you should find that everything works. You can use the windows adminastrative tools to create and format a partion on the second half of the laptop drive.
If the system does not boot, it is because the boot block on the new hard drive is not setup. You can fix this using the the borrowed windows install disc. You just boot from that, select 'repair' and it should fix it for you.
Alternatively, it is possible under linux to take a copy of the boot block, which can be restored to the new drive, but I don't know how.