Hi,
It's kinda hard to give any definitive answer to your problem, partly because from your post I'm not sure exactly *what* your problem is

The 1st step of course is dumping at the right OEP and making sure you've got the correct IAT start and length. There's been plenty of posts/tuts on this. Seems that every app uses a different weekly version of Asprotect as well, heh, so there's no tried and true method of finding the OEP dump location either.
I'm not giving anything away here by saying that there are usually some unresolved entries in the IAT after running Revirgin. Used to be there was only 1 or 2 and these were actually redirected GetProcAddress calls and you could just edit these entries yourself before generating the IT. Even then the program was likely to crash because of some other redirected non-API call that tried to access a value in Asprotect memory. Sometimes these could simply be replaced with GetVersion (nothing pushed, essentially acted as a RET), or nopped out, but sometimes you needed to be a bit more creative and actually return some address or other.
I've seen a few apps though that some unresolved entries were something other than GetProcAddress, or there's just some other reason for it crashing that Revirgin has no chance at solving. For these you need to trace each problem area yourself in the packed app and figure out what the code is *supposed* to be looking for/doing and determine how to fix this in the unpacked app. I've seen a couple where if you nop out the call to the registration nag it runs fine.
So really, assuming you've dumped at the right location and Revirgin behaved reasonably well, most of the problems can only be gleaned by getting your hands dirty in the packed file and carefully tracing the problem areas. Not sure what other advice I can give, hope this helps.
Regards,
Kayaker