I have managed to solve this problem. Whilst debugging and inspecting the webpage (using Chrome) I noticed that there are in fact two login forms.
I could get around this by declaring the login form html in another file (or within the Javascript that's executed on clicking the Login link). Either way, by performing webDriver.findElement(By.class("popover-content")) and then searching for the form within this solves my problem.
public void login(final String user) {
webDriver.findElement(By.id("login")).click();
final WebElement loginForm = webDriver.findElement(By.class("popover-content)).findElement(By.id("loginForm"));
loginForm.findElement(By.id("username")).sendKeys(user);
loginForm.findElement(By.id("password"))password.sendKeys(dslConstants.PASSWORD);
loginForm.submit();
}
I suppose the lesson from this is that I review how libraries I use in my web application actually work!