One of the major differences is that WinRunner uses Mercury Interactive's proprietry language for scripting called TSL whereas QTP uses visual basic. Have a look on the mercury website for complete descriptions.
In most cases, the same sort of testing can be achieved using either product. WinRunner is the older of the two and is sometimes seen as for more more technichal users with QTP perhaps being more suitable for business users. I get the feeling that eventually Mercury want to get everyone using QTP but there are still many places that use WinRunner.