Many password-based encryption utilities (e.g.: KeePass, TrueCrypt) do something along the lines of...


Encrypt data with super-strong random-generated key, "data key".
Encrypt data key with another key, "user key", based on user-provided password.
When access is needed, user provides password. Password is used to recreate user key, which decrypts data key, which decrypts the data.


Presumably the logic behind that is this:


User-provided passwords suck, so we need a better key to protect the data.
Users still need access to the data, so we need a way for them to do it with a password.


However, the bottom line of all this is that the protection of the data still boils down to the strength and protection of the user-provided password. So, what's the real point of the extra overhead in having a separate key involved?

The main advantage of using an intermediate key is that is allows changing your password without reprocessing all the data.
E.g. you have a big file (gigabytes...) encrypted with random key K (a 128-bit value), and K is itself encrypted with P (the key derived from the password). If you change your password, you get a new password-derived key P'. To adjust things, you must then decrypt K with P and reencrypt it with P'. This does not require reencrypting or even accessing the big file.
Apart from that advantage, using an intermediate key decouples the operation, which is more flexible. For instance, the process used to turn the password into a symmetric key might not be up to the task of producing a key of the length you want for bulk encryption (for instance, bcrypt will produce a 192-bit key, not a 256-bit key).
Another advantage of the intermediate key is that it allows revealing files. For instance, you have your big file, and you want to show it to Bob. But you do not want to give your password to Bob; you want Bob to be able to see that single file, not all other files which are morally encrypted with the same password. With the intermediate key, this is easy: you just show K to Bob. As long as each file has its own random K, this works.
Note that the model extends to asymmetric encryption: a file sent to n recipients will be encrypted once with a random key K, and K will be encrypted with the public keys of each recipient. This is how things work in OpenPGP. The corresponding advantages map to the password-based situation as well.
