technically even the affiliate thing can backfire... if the person is really bored and has a lot of time in their hands, they can keep trying different affiliate IDs till one works
you can of course select random IDs and assign them :-)
i think the HTTP referer should be good enough unless you suspect most of the people visiting your site are very knowledgable and know how to fake their http-referer variables.
at my sharptoner site, I too have discounts for people who visit from certain domains (i.e. places I advertise in).
What i do is setup a special URL and submit that for advertisements. that way people who click the ad will get the 10% discount and people who come to the main site won't :-)
this might be a good solution if your scenario is similar to mine.
-sridhar