In the more recent games, there are NPCs that you can talk to and they will tell you what type of Hidden Power your Pokémon has. According to Bulbapedia, the locations of the NPCs are:
- Platinum: Veilstone Game Corner
- Heart Gold/Soul Silver: Celadon Game Corner
- Black/White: Mistralton City
- XY: Anistar City
- South-Eastern-most house
- Also the location of the Hidden Power TM.
- Omega Ruby/Alpha Sapphire: Fortree City
- Top row of houses, second from the left.
- Also the location of the Hidden Power TM
If you want to find out through combat, here's something I threw together (Disclaimer: there's likely a much more efficient way to figure it out):
1. Battle a Patrat / Lillipup.
Super effective: Fighting. Didn't affect: Ghost. Normal effectiveness: goto 2
2. Battle a Cottonee / Petilil.
Super effective: goto 3. Not very effective: goto 4. Normal effectiveness: goto 5.
3. Battle a Klink.
Super effective: Fire. Not very effective: goto 6. Didn't affect: Poison.
4. Battle a Roggenrola.
Super effective: goto 7. Normal effectiveness: Electric.
5. Battle a Sewaddle.
Super effective: Rock. Normal effectiveness: goto 8.
6. Battle a Woobat.
Super effective: goto 9. Normal effectiveness: goto 10.
7. Battle a Ducklett.
Normal effectiveness: Grass. Not very effective: Water. Didn't affect: Ground.
8. Battle a Sandile.
Normal effectiveness: goto 11. Not very effective: Dark. Didn't affect: Psychic.
9. Battle a Ferroseed.
Normal effectiveness: Ice. Not very effective: goto 12.
10. Battle a Timburr.
Super effective: Flying. Normal effectiveness: goto 13. Not very effective: Bug.
11. Battle a Darumaka.
Normal effectiveness: goto 14. Not very effective: Steel.
12. Battle a Drilbur.
Normal effectiveness: Dark. Not very effective: Rock.
13. Battle a Trubbish.
Normal effectiveness: goto 15. Not very effective: Poison.
14. Battle a Deino.
Super effective: Dragon. Normal effectiveness: Normal. Not very effective: Dark. Didn't affect: Psychic.
15. Battle a Blitzle.
Normal effectiveness: Dragon. Not very effective: Steel.
My thought process (possible types at each stage) is in the revision history of this answer.
If you're after exact values, then no - the only way to get those is if you have kept track of everything that Pokémon has battled against (and gained experience from), or if you are able to dump the save game and load it into a tool like Pokésav.
According to Bulbapedia, there's an NPC in Opelucid City which can tell you if the first Pokémon in your party has reached the 510 EV limit, but that doesn't tell you anything about which stats they're distributed in.
If you know the IVs of your Pokémon, you can plot all of the relevant values into the stat formula, and then you'll be able to solve for the unknown EV - but since you need 4 EVs for 1 stat point at level 100, you can't determine an exact value, only a range of possible values (the size of the range depends on your level).
You can also get a bunch of EV-reducing Berries (26 are required to bring a stat from 255 EVs to 0), and then use them reset all EVs to 0. You can then either EV train your Pokémon as you desire, or, if you have a sufficiently high level to calculate accurate IVs, you can do that, reload without saving, and then calculate an EV range as I described before.
Best Answer
The two characters listed there are the only ways to check happiness levels in B/W as far as I know. There is no way to find out the exact value in-game.
However, there is an online tool called PokeCheck that can give you all the exact stats of your Pokemon, including happiness. (It works by "intercepting" a connection to the GTS and recording the Pokemon data; nothing is traded away or modified.)
If you need to evolve Pokemon by happiness the easiest solution is to make them old the Soothe Bell and keep them in your party while you train others. You can let them battle a bit, but don't let them faint. Some other methods like massages are listed on Bulbapedia.