How to check other table for value during insert
This would work:

INSERT INTO car_model(model_name, car_make, date_released)
SELECT *
FROM  (SELECT 'Classic Car', 'Car Brand', '2000-01-01'::date)
  AS i(model_name, car_make, date_released)
WHERE  NOT EXISTS (
   SELECT FROM car_make m
   WHERE  m.company_name = i.car_make
   AND    m.date_incorperated &lt;= i.date_released
   );


Or you can still keep the VALUES expression to insert multiple rows at once:

INSERT INTO car_model(model_name, car_make, date_released)
SELECT *
FROM  (
   VALUES 
   ('Classic Car', 'Car Brand', '2000-01-01'::date)
    -- more rows?
   ) AS i(model_name, car_make, date_released)
WHERE  NOT EXISTS (
   SELECT FROM car_make m
   WHERE  m.company_name = i.car_make
   AND    m.date_incorperated &lt;= i.date_released
   );


Note how it may now be necessary to add explicit type casts. See:


Casting NULL type when updating multiple rows


You had a couple of issues:


A VALUES expression does not take a WHERE clause. Needs to be a SELECT for the purpose.
Values are enclosed in single quotes (''). Double quotes ("") are for identifiers.
To refer to input values, you need to form a derived table and attach column aliases first - with a subquery (like I did) or a CTE.


Related:


How do I insert a row which contains a foreign key?
Select rows which are not present in other table