You can make the DNS record for the subdomain a CNAME record referencing the new domain; I don't think there's any harm in doing so, as long as the site still works (some web applications depend on knowing the domain name they're accessed with). However, people who navigate to the subdomain will actually see the subdomain, not the new domain, in their browsers' address bars, so they won't know the site has switched domains. For that reason I would not use a CNAME record to do a "redirect" like that. I'd stick with the HTTP 301 redirect.
Now, I agree with ceejayoz that the load on the server is negligible, so there's no need to remove the 301 redirect. But if you did want to know how soon you can remove it - for instance if you wanted to reuse that subdomain for a different site - I would look at your server's access logs to track the number of hits on the subdomain over time, after the new site goes live. (If you have a logfile analyzer installed, it makes this easy) If a (week|month|year) passes without you getting any requests for anything on that subdomain, it's a sign that the redirect may not be needed anymore. Obviously, the longer you wait without getting any requests on the subdomain, the more likely it is that the redirect can be safely removed.