You need to wait for IE.readyState too, like this:
Sub Open_Internet_Explorer()

    Dim IE As Object
    Dim IEdoc As Object
 
    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .navigate "http://tracking.phservice.co.uk/auth/login"
        .Visible = True
        While .busy Or .readystate <> 4
            DoEvents
        Wend
        .Document.all("username").Value = "********"
        .Document.all("password").Value = "********"
    End With
    
 End Sub