Because I've mentioned a post on Language Log, A weekend is not a surface, I think I should write about it a little, boiling it down to a short, useful post.
Though this question is only about on or at (the weekend), the post on Language Log summarizes it nicely:
An attempt ensued to achieve descriptive accuracy. It was agreed that times within the day generally take at (at 9:30, at noon, at dawn, at dinner, at night), except for those that take in with the definite article (in the morning, in the evening); that days generally take on (on Monday, on her birthday, on Valentine's Day), except maybe for at Christmas; that months and seasons and years and centuries generally take in (in December, in winter, in 1893, in the 15th century). And never mind the (generally relative) time-references that don't take any preposition at all, like tomorrow, next week, three days ago.
That's really useful, not just because it covers all the most common prepositions used with time expressions (at, on, in); it also hints at how we can conceptualize these expressions so we can use them appropriately.
The next paragraph also gives a big clue to the difference between dialects:
This all hints at a coherent metaphor: hours and other short periods of time are places; days are surfaces; months and longer time periods are containers. But it seems that only North Americans apply this logic to weekends.
So, it's rather clear that only North American speakers will normally use on with weekends. On (not at or in) the other side of the pond, it seems like at is the choice.
That's as far as I can go. Beyond that, you have to rely on yourself (the mentioned Martin Haspelmath, "From Space to Time: Temporal Adverbials in the World’s Languages", 1997, seems like a great read). I also hope more native speakers will chime in soon.