apart from the typo in the passowrd you should enable exceptions for PDO and use a try and catch statement to catch the exception. Also some other little changes, like structuring the PHP first and removing the odd re-assign of the POST superglobal.
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    $result = "Thanks for registering with us!";
    try{
        $db = new PDO('mysql:host=localhost;dbname=phpproject', 'root', 'pdt1848!');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
        $sql = "INSERT INTO users (username,   password,  fname,  lname,  email)
                            VALUES(:username, :password, :fname, :lname, :email)";
        $query = $db->prepare($sql);
        $query->execute(array(':username'=>$_POST['username'],
                              ':password'=>$_POST['password'],
                              ':fname'=>$_POST['fname'],
                              ':lname'=>$_POST['lname'],
                              ':email'=>$_POST['email']));
    }catch(PDOException $e){
        $result = 'Sorry, an error occurred while editing the database. Contact the guy who built this garbage.';
        //or use $e->getMessage(); for the real error
    }
    echo $result;
}
else{ ?>
<form name="registration" action="register.php" method="POST">
    <label for "username">Username: </label>
    <input type="text" name="username"/><br />
    <label for "password">Password: </label>
    <input type="password" name="password"/><br />
    <label for "fname">First Name: </label>
    <input type="text" name="fname"/><br />
    <label for "lname">Last name: </label> 
    <input type="text" name="lname"/><br />
    <label for "email">Email: </label>
    <input type="text" name="email"/><br />
    <button type="submit">Submit</button>
</form>
<?php } ?>
Also its a very bad idea to store plain-text passwords in your db. ~ Read: Best way to store password in database.
Edit,
Added some validation of your inputs to help you get started, hope it helps. not tested.
<?php
try{
    $db = new PDO('mysql:host=localhost;dbname=phpproject', 'root', 'pdt1848!');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
}catch(PDOException $e){
    die('Sorry, an error occurred while editing the database. Contact the guy who built this garbage.');
    //or use $e->getMessage(); for the real error
}
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    //create empty error array - to fill with errors if any
    $error = array();
    //validate username
    if(empty($_POST['username'])){
        $error['username'] = 'Enter a username';
    }elseif(strlen($_POST['username']) <= 2){
        $error['username'] = 'Username too short > 2 chars';
    }else{
        //check for existing user
        $sql = "SELECT 1 
                FROM `users` 
                WHERE username = :username";
        $query = $db->prepare($sql);
        $query->execute(array(':username' => $_POST['username']));
        $result = $query->fetchAll(PDO::FETCH_ASSOC);
        if(!empty($result)){
            $error['username'] = 'User already exists'; 
        }
    }
    //validate pass
    if(empty($_POST['password'])){
        $error['password'] = 'Please enter password';
    }elseif(strlen($_POST['password']) < 6){
        $error['password'] = 'Password too short, password should be 6 chars or longer';
    }
    //validate fname
    if(empty($_POST['fname'])){
        $error['fname'] = 'Please enter your first name';
    }
    //validate fname
    if(empty($_POST['lname'])){
        $error['lname'] = 'Please enter your last name';
    }
    //validate email
    if(empty($_POST['email'])){
        $error['email'] = 'Please enter your email';
    }else{
        if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
            $error['email'] = 'Please enter valid email';   
        }
    }
    //no errors detected so insert
    if(empty($error)){
        $sql = "INSERT INTO users (username,   password,  fname,  lname,  email)
                            VALUES(:username, :password, :fname, :lname, :email)";
        $query = $db->prepare($sql);
        $query->execute(array(':username'=>$_POST['username'],
                             ':password'=>$_POST['password'],
                             ':fname'=>$_POST['fname'],
                             ':lname'=>$_POST['lname'],
                             ':email'=>$_POST['email']));
        $result = 'Thanks for registering with us! <a href="login.php">Click here to login</a>';
    }else{
        $result = 'Please correct the errors';
    }
}?>
<?php echo isset($result) ? $result : null;?>
<form name="registration" action="register.php" method="POST">
    <label for "username">Username: <?php echo isset($error['username']) ? $error['username'] : null;?></label>
    <input type="text" name="username"/><br />
    <label for "password">Password: <?php echo isset($error['password']) ? $error['password'] : null;?></label>
    <input type="password" name="password"/><br />
    <label for "fname">First Name: <?php echo isset($error['fname']) ? $error['fname'] : null;?></label>
    <input type="text" name="fname"/><br />
    <label for "lname">Last name: <?php echo isset($error['lname']) ? $error['lname'] : null;?></label> 
    <input type="text" name="lname"/><br />
    <label for "email">Email: <?php echo isset($error['email']) ? $error['email'] : null;?></label>
    <input type="text" name="email"/><br />
    <button type="submit">Submit</button>
</form>