To add to what Dave has said, the most frequent cause of this is an INSERT statement where the columns are not listed:
INSERT INTO MyTable VALUES (...)
Instead the more explicit
INSERT INTO MyTable (Col1, Col2, Col3) VALUES (...)
When you do this, teh DB tries to insert values according to the current column order - and if you have an IDENTITY field that is usually both the Primary Key and the first field in the table definition. So despite the DB allocating it, your first value will try to go into the Primary key table and if that value exists, you get the error you have seen. (If it doesn't, you get a different error!)
Always list the column names in the order you will provide values - it prevents problem like this, and also reduces the chances for corrupting your database!