The difference between a crossover cable and a regular ethernet cable is that the send/receive wires have been reversed. A hub accomplishes the exact same thing, but it's used to connect more than 2 computers.
Microsoft XP has a built in internet connection sharing feature. As long as you have two network interfaces in your computer (which means you are getting your internet into your computer from something other than the ethernet port you want to share it with) you should be able to share it. It does not require a crossover cable.
Here's an example:
I was in a meeting with a vendor last week. I had access to my wireless network at work, but I couldn't get him on the wireless network. He plugged his laptop's ethernet port into my laptop's ethernet port directly using a standard (non-crossover) cable. My wireless network card obtained an IP address from the wifi network, and I turned Microsoft XP connection sharing on for my wireless network connection. My ethernet port was then had the ability to assign an additional, local IP address to anybody who connected to it, and it handled the routing. You could substitute "wireless connection" for "modem connection" and it would work just the same (albeit slower)
When you're dealing with a wired ethernet connection as your pipe to the internet (cable/dsl, office LAN, etc...) the best bet is to purchase a cheap little linksys router. If you're in a bind however, Windows XP connection sharing will accomplish the same task assuming you have an unused ethernet port and a regular ethernet cable.