My test teams have been using QTP. This allows both record & replay as well as scripting for GUI testing. The cost is high and the RoI comes in primarily when you have a large number of users.
One issue that we have faced with QTP is that they don't recognize the latest the latest .NET 3.x controls and we've been working with Mercury/HP for fixes. Response time was faster before the HP acquisition but now it has been slow.