Here's what I wrote for my engine:
[pascal]
var
QPCFrequency: Int64;
QPCEnabled: Boolean;
CurrentTime, LastTime, CurrentDeltaTime, TotalTime: Single;

procedure UpdateDeltaTime;
var
Time: Int64;
begin
if QPCEnabled then
begin
QueryPerformanceCounter(Time);
CurrentTime := (Time / QPCFrequency);
if LastTime = 0 then
CurrentDeltaTime := 0
else
CurrentDeltaTime := CurrentTime - LastTime;
end
else
begin
CurrentTime := TimeGetTime;
if LastTime = 0 then
CurrentDeltaTime := 0
else
CurrentDeltaTime := (CurrentTime - LastTime) / 1000;
end;
gDeltaTime := CurrentDeltaTime;
LastTime := CurrentTime;
TotalTime := TotalTime + CurrentDeltaTime;
end;
[/pascal]

I check for QueryPerformanceCounter/Frequency on initialization phase and use it if possible, if the check fails then I use TimeGetTime which seems to work quite well even on my AMD Athlon X2.