Unable to wrap a simple CTE in plpgsql loop
First: user is a reserved keyword, you need to use double quotes if you want to use it as a table name: "user" But I strongly suggest you find a different name. 

To answer your immediate question: just remove the final select from the CTE - that's the one cause the error (as you need to store the result of that select somewhere).

CREATE OR REPLACE FUNCTION ins() 
returns void as 
$BODY$
declare
   loopid integer;
BEGIN
  FOR Loopid  IN 0..10 LOOP
    with new_user as (
      insert into "user"
      values(default) 
      returning id
    )
    insert into user_property (property_of) 
    select id 
    from new_user; 
  END LOOP;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;


Note that the language name is an identifier, you should not put it in single quotes.

However, you don't really need a function for that: 

with new_users as as (
  insert into "user" (id)
  select i 
  from generate_series(1,10) --&lt;&lt; this is the number of rows. 
  returning id
)
insert into user_property (property_of)
select id  
from new_users;