The traditional way to calculate EV is to use the EV reducing berries.
Pomeg - reduces HP EV
Kelpsy - reduces Atk EV
Qualot - reduces Def EV
Hondew - reduces SpA EV
Grepa - reduces SpD EV
Tamato - reduces Spd EV
Each of these berries typically reduces the number of EV on a particular stat by 10, the exception is in Gen IV, where the berries would drop the EVs to 100 if the EVs were above that.
So, if your Pokemon had 252 Atk EVs, you would need 26 uses of Kelpsy to make it zero, and you will get a message along the lines of:
Eevee became more friendly! Its base Atk can't go lower!
when the EVs hit 0. You will need the same number of berries for an EV of 251, and you would need 25 berries for a total EV of 250.
Unless you are in Gen IV where you would need 11 berries in both cases. It is actually not easy to calculate the EVs accurately in Gen IV.
From that, you can get an idea of what your EVs are, to the nearest 10 points for all except Gen IV. If you want to get even more precise of a number, you will have to give some EVs and try again.
E.g.
Your current Pokemon has 164 EVs in HP (but you don't know that yet). Save your game and give the Pokemon Pomeg berries and you observe that you used 17 berries to drop it down to 0. Restore your previous save game and battle 1 Pokemon to increase the EVs (Caterpie, Wooper, Gulpin, Bidoof all give 1 HP EV each) and check the EVs again.
After battling 1 of these, you should be requiring 17 berries still because the total EV would then be 165.
However, couple of tries later, you find that after battling 7 of them, you require 18 berries to drop the attack to 0, so you know that the EV is 171-7 = 164 for HP.
Note that if you are in Gen V, then you can use Wings instead to add the EVs more easily.
I didn't really use a source, but I learnt those through serebii way back and their article is pretty detailed, so explore to your trainer's heart's content.
In Gen VI, it is easier and you can use the Reset Bag the way @SentinelGaming described, that is save your game, use the reset bag, note down the figures that appear when the bag is used before they disappear and restore your previous save game. If you can read the numbers easily, you can press the Home button when the numbers pop up so you 'freeze' the image and can take your time to note them down.
If I take for example a Charizard of Lv 100 in FireRed. I want to know the EVs in Special Attack. I don't know its IVs nor EVs in Special Attack. Let's say the EVs are actually 198, but I don't know this yet.
I save the game.
When I use a Hondew berry, I find that I need 20 berries until the berry doesn't have any effect. That immediately tells me the Charizard must have between 191 to 200 EVs in Special Attack, because:
200 EVs will require 20 berries
199 EVs will require 20 berries (19 berries remove 190 EVs and the last removes 9 EVs)
...
191 EVs will require 20 berries (19 berries remove 190 EVs and the last removes 1 EV)
I restore the save game and use a couple of other berries to reduce other stats, in case the Charizard has maxed out of EVs. I give the Charizard one more EV in Special Attack by attacking a Pokemon which gives 1 SpA EV, e.g. Oddish, and do the same as before with the berries. It takes 20 berries again, so the possibilities narrow down to 191-199 EVs in SpA.
I repeat with one more EV in SpA until the number of berries change. The number of berries change when I need 21 berries until the berry stops having any effects; i.e. after I added 3 EVs to SpA.
That means the number of EVs + 3 gave me a number that is one more than a number divisible by 10. That means that Original EVs + 3 EVs = 201 EVs.
From there you see that the EV must be 198.
Calculating from the stats can yield numbers induced with errors from the game rounding numbers and the unknown value of IV.