How to store values of all columns in an index in PostgreSQL?
Of course, you can create an index which would contain all columns from the rows.  

From PostgreSQL 9.2 there is a possibility that this will speed up certain SELECT queries as from that version there are index-only scans.  The difference between the 'raw' table and this index will only show if the query picks only a part of all rows, based on the first column(s) of the index.  A WHERE clause containing conditions only about some later columns will most probably do a sequential scan, that is, it will go to the table itself as the rows to be retrieved will be spread across the whole index.

Also, maintaining such an index is quite expensive when it comes to DML statements - I would say that it doubles the number of writes for every such statement.