If you want to change a varchar(n) to a varchar(m) you can do this by poking around in the system data structures. But generally speaking you cannot alter datatypes because how does PG know how to convert 'asdf' to an int?
So in general yes, rename the old table, create the new, then
insert into <new>
select <fields> from <old>
where you can of course apply any functions you like to your old fields to match the new types.