Issues with running DOS games on real hardware are unfortunately numerous... here are a few that come to mind:
1. Memory configuration issues - dos games use conventional memory, EMS and or XMS memory. Setting up the correct memory subsystem for a certain game can be a pain in the butt. You can get around this by using a DOS Boot menu or with some games simply booting of a DOS floppy.
2. Disk drive issues - some games (specifically the copy protection) act up on larger hard drives. If I remember correctly the limit was 540MB or so - anything bigger and copy protection on some games will fail. I don't know if limiting the partition size can work around this issue or if the copy protection software somehow looks at the size of the whole drive.
3. Runtime 200 error - this error will pop up in some games (like Jazz Jackrabbit as @Zup mentioned). If I remember correctly, it only affects games written in turbo pascal. There is a patch for these called - tpatch.exe if memory serves.
4. Driver and hardware hell. Dos driver issues can affect sound cards or video cards. Some games require hardware with certain VESA features, like constructor witch I found last year refused to run on a Voodoo 3 but would run fine on an S3 virge. This is due to a vesa driver witch the game runs on startup. Similar issue with sound cards - especially later creative cards (AWE32/64) and cards like the Gravis Ultrasound. Mediavision cards also have some issues with games that do not natively support them, and you need to run a little driver (TSR) that emulates sould blaster compatibility. Other users would be able to explain these issues in much more detail.
And finally the biggest issue (from my experience) with running dos games on real hardware:
5. Speed issues and hardware fragmentation - some very old dos games were designed to run on an original 4.77MHz IBM XT and will run much too fast on anything else due to the game timers being linked to CPU cycles. Other older games like wing commander are designed for fast 386 / slow 486 machines and again run to fast on newer hardware. In some cases games outright refuse to run on faster CPUs - see runtime error 200 above. There are patches available for some of these, like Jazz Jackrabbit and supaplex for example, but in case of games like Dyna Blaster there is no fix I am aware of. Despite slowing my test systems down to under 386 speeds, dyna blaster will not play on either my VIA C3 build or my K6-III build. It will run, the menu works perfectly, but the controls do not work ingame, you will not be able to move the character. You can quit the game and start a new game just fine so it reads keyboard inputs fine on faster PCs, you just can't move the character ingame, I don't know why that is. In contrast, later dos games don't really run acceptably (for me at least) even on recommended hardware. Quake is a good example - even on a 133MHz pentium it's not the smoothest experience, but it is quite playable. I find dos quake 1 runs best on a 233MHz pentium or faster. Duke 3D is more of the same. The more CPU muscle you have, the better it runs. Descent 1 and 2 are in a similar position, but only to a point. On a fast 486 - say 133MHz AMD 586 - it runs, it's playable, but I would not call it enjoyable by any means. I find Descent 1 and 2 run best on a 166Mhz pentium 1 or AMD K6. If you go much faster then that, say 500MHz, the game's timer starts acting up. The ships will bob up and down way too fast, funny things start happening to the AI and the mouse sensitivity goes nuts.
As such, the only sure-fire way of running ANY dos game on real hardware is to have a build from each time period - witch is extremely impractical. Early dos games on an XT, turbo XT or slow 6 or 8MHz 286 with a turbo button, later dos games on a fast 286 (20-25mhz) or 386 - even a slow 486-SX25 with a turbo button (very few games fit here), an early pentium for some of early to mid 90's games (significant number of games fit here), and a faster pentium 2/3 for late 90's dos games (again very few games would benefit from this build).