I think there are only two ways a application or a server could get your IP.
If it is an application, java/flash, I think it could check your network settings locally and send your IP back to the server. Then the server would know.
The other way it could find is that it could analyze the packet headers. Then find there your IP information.
But if I wanted it to stop doing it.
If it was analyzing locally my IP information I could stop that packet or change its information so the website would be confused about the IP information.
If it was analyzing the packet headers and if knew what packets it was analyzing because it wont analyze every packet, I could stop sending those packets.
Example:
Websites that checks your IP, how does it do it? If you are not downloading any application, you would exclude the 1. scenarion. Then the only possibility is that it was analyzing packet headers but what kind of packets?
It was not one question only but if anyone knows something about it, I would like to know too. :)
Thanks