OSPF virtual links are relatively simple to configure and you normally do not run into too many problem getting them up and working but an odd issue you could run into is when trying to run the virtual link over an interface who's OSPF cost is maximized (65535 or 0xffff). The virtual link will not come up if the only interface to reach the other end of the virtual link has a cost that is maximized. For those of you who have not read RFC 2328 I will quote part of section 15 for you below ;)
Note that a virtual link whose underlying path has cost
greater than hexadecimal 0xffff (the maximum size of an interface
cost in a router-LSA) should be considered inoperational (i.e.,
treated the same as if the path did not exist).
Now you may say why would you ever set the cost to 65535 to begin with? You may not directly set the cost but you may be asked to use the auto-cost reference-bandwidth command for a task and indirectly set the cost of a transit interface for a virtual-link you created earlier to 65535. So by solving the auto-cost reference-bandwidth task you broke the virtual-link you created earlier and in turn broke a big portion of your OSPF domain. In fact now that I think about this issue I am going to write it into version 5 of the R&S material ;)