I have solved this problem in Hyperspin for my Egret 2 arcade machine (Using Windows 7 X64, ArcadeVGA and J-Pac).
Get the Switchres.zip file posted earlier in this thread.
Unzip it into you mame folder.
Edit Hyperlaunch.akh in your Hyperspin folder. (Make a backup of Hyperlaunch.exe, and Hyperlaunch.ahk first)
Change the MAME part to this:
;*************************************MAME**************************************
else if (systemName = "MAME" && executable = "mame.exe")
{
hideDesktop()
Hotkey, %exitEmulatorKey%, CloseProcess
Runwait, c:\Emu\Mame\640x288.exe, Hide UseErrorLevel
Runwait, %executable% %romName%, %EmuPath%, Hide UseErrorLevel
Process, waitClose, %executable%
Runwait, c:\Emu\Mame\640x480.exe, Hide UseErrorLevel
exitapp
}
Change the path names to 640x288.exe and 640x480.exe, to your mame installation, before saving.
Download Autohotkey from here:
http://www.autohotkey.com/download/Install it and run the compiler. (Compiler\Ahk2Exe.exe)
Select the new hyperlaunch.ahk and compile it into a new hyperlaunch.exe.
Replace the old hyperlaunch.exe with the new one you made. (Remember to always make a backup first)
And now DirectDraw in MAME under windows 7 works.
What this change does is whenever you launch a MAME game from Hyperspin the resolution is changed to 640x288 before mame is started.
Mame runs, sets the right directdraw resolution and avoid the interlace/non-interlace bug in Windows 7.
When you exit mame the resolution is reset to 640x480.
And everything works.

DirectDraw looks glorious on a 15Khz monitor. A huge difference compared to D3D. Well worth the bother.

Regards
/Finn