I'm going to suggest the manual way to do it. It means typing some commands at a prompt to clone your data and then clicking in a partition editor to resize your partitions, which is tricky and technical, but cloning a hard disk is a task that requires care because of the information you want to keep. This method's also free -- won't cost you a jot -- but if you must have an easier tool you'll have to pay for it.
I'm going to assume that you're using Windows with either FAT- or NTFS-formatted (1) disks Because you didn't give a whole lot of information about how technically-proficient you are, I'm going to explain everything. I don't want to come across as patronising, and apologise if I do, but this hard drive transfer is your delicate data and clear explanation of everything will help avoid messing up.
First, back up all your precious data. Just do it, because this cloning method is advice offered by the internet and not at all an admission of responsibility for data loss should that big bad thing happen. If you have backups, then you're able to recover if something goes wrong.
Then we need a LiveCD that provides the programs we need. Either download the GParted LiveCD for the small 30ish MiB (2) of free magic to do the job, or the Ubuntu 6.10 Desktop LiveCD which is bigger, at 700ish MiB but provides a web browser and IM program (3) to use while you're waiting for your drive to copy and re-size. Download either and write them to CD. If you've no access to a CD writer, Ubuntu will mail you CDs. They freely distribute a previous version of the Ubuntu Desktop, number 6.06, or you can pay for a disk with 6.10 (4).
Next, a question: How are you going to get your disks together in one computer to copy the data? If you've got a USB caddy you can put the new disk in, everything's alright. Or you can go and buy mounting brackets for a desktop/tower PC to use its existing connectors. (I will recommend that you buy a USB caddy from eBay and the like and take your original 40GB disk from your notebook and put it in the USB caddy. Then install your new drive in you notebook -- but only do this just before you clone your data as a blank disk makes the computer unusable. Later, you can easily copy important files to your old disk, and keep it in a safe place in case you need to restore those files.)
The backup thing and the LiveCD thing are essential preparation for your disk move. Don't try to start this without them.
<*> Connect your drives together in the computer you're going to be using. Watch out for 'slave' mode if you're connecting them to another computer's IDE system! If you're following my recommendation, the old disk is in a USB enclosure and the new inside your notebook. If not, you'll have to find out where the disks are connected and how the LiveCD's name them.
<*> You've got backups elsewhere, right? Do it. Do it. Do it now.
<*> Put whichever LiveCD you've chosen in your CD drive and restart your computer. The GParted disk will start and ask you for your language and screen resolution preferences; Ubuntu will do something similar.
<*> When the desktop screen arrives, get a terminal window. For GParted that means right-clicking on the background and selecting 'xterm'; Ubuntu has the Applications menu in the top left, with Terminal under Accessories. Additionally, Ubuntu may give you access to the files on whatever hard disks are in the computer you're using. We don't want that, so right-click on any hard disks on the desktop and select 'unmount'.
<*> Next, we're going to check exactly what size each disk is: in GParted, right-click on the desktop and select 'partition editor'; in Ubuntu, System -> Administration -> Gnome Partition Editor. It will scan your disks and list what's on them. The button in the top left corner allows you to swap between disks and to see what Linux has called them. Note down which '/dev/xxx' is your old disk and which is your new disk, with old_disk being the old disk's place name, and new_disk being the new. Close the partition editor for now.
<*> In the terminal window, we now type the command to copy the whole disk's information to the new disk. Be careful to replace 'old_disk' and 'new_disk' with the right names, because entering this the wrong way round will ruin your old disk, overwriting it with whatever's on the new disk. In GParted, type [code:1:7e0f706da9]dd if=old_disk of=new_disk bs=1M[/code:1:7e0f706da9] In Ubuntu, type [code:1:7e0f706da9]sudo dd if=old_disk of=new_disk bs=1M[/code:1:7e0f706da9] (5) That will take a while.
<*> Once that's done, restart the partition editor (directions as above) and maybe you will be able to fill out your new space. Pick the new disk, and see if you can choose a method to move and resize your partitions to make best use of all your new disk space. Perhaps you might add a third partition (6). You can either tell the partition editor to make all the changes in one go, or do them step-by-step yourself. If you do the latter, write down you list and follow it.
<*> When you're finally happy with the changes you've made, close the partition editor and restart the computer -- right click on desktop in GParted or the red on/off button in the top-right corner of Ubuntu or on the System menu in the top left.
I hope that helps.
(1) These are two ways that Windows arranges information on storage.
(2) Let's be precise: MiB is 2^20 bytes, slightly bigger than MB = 10^6 bytes.
(3) And Office suite and desktop games and music player and... oh, and it can install that desktop to your computer if you'd like to keep it.
(4) The numbering refers to the year and month it was released: 6.10 is October 2006
(5) 'dd' copies data excatly; 'sudo' is a program that allows a limited-rights user access to all the system's resources -- for safety, use 'sudo' only when you really must.
(6) You may need to read more about that -- wikipedia has a good range of articles about this.