The point of a GUID is to be "Globally" Unique, meaning that the likelihood of anybody ever coming up with the same unique identifier that someone else is already using for a different object must be so small that you're willing to bet your business on it. Smarter minds than mine have determined that 16 bytes, combined with the right algorithm, is sufficient to achieve this. Since 8 bytes gives you only a tiny, tiny fraction of the number of possibilities that 16 bytes would give, I wouldn't recommend using 8-byte GUIDs.
However, if you really want to, you could do something like this:
public struct SmallGuid
{
byte FirstByte;
byte SecondByte;
...
}
Then you could either generate random values for these bytes, or leverage the real Guid class, and pull half the bytes off of it to populate your SmallGuid.