Originally posted by GilesGuthrie
Dynamic IP addresses come from a DHCP server (Dynamic Host Configuration Protocol). It's more economical for an ISP to use dynamic addressing because then they can contend the addresses, that means they have less IP addresses than subscribers. If each subscriber had a fixed IP address, they would have to have a 1:1 ratio of IP addresses to subscribers.
The IP address can change during a session because addresses are leased to clients by the DHCP server. If your session is longer than the lease, you will request a new lease from the DHCP server. This could be the same address, or it could change, depending upon what addresses are available when you request your address.
It has been noted that DHCP clients and servers can create an 'affinity', tending to pick up the same address each time they get a lease. However, I think this is less common now, and most DHCP servers will issue the lowest address available whenever a client requests a lease.