You can add a ServerAlias to the new.com vhost file: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias
I'm assuming that other.com is the default domain that the server picks up.
EDIT
You can see the list of vhosts your apache serves, as well as which one is default using
apachectl -S
If the default is 'other.com', then any requests that are determined to go to that server indicated by your CNAME that aren't correctly configured in the new.com vhost, will direct to the default vhost.
Edit 2 added rewrite code.
Once you're sure that the ServerAlias is set up right and a request from 'www.old.com' is serving the files from 'new.com', you can make sure all traffic from www.old.com gets properly 301-redirected (simply speaking: the URL changes in your browser, and search engins know this is a permanent change) using the following code (assumes you have mod_rewrite enabled) in the vhost file (or .htaccess):
<IfModule mod_rewrite.c>
RewriteEngine On
# START DOMAIN REDIRECTS
RewriteCond %{HTTP_HOST} ^www\.old\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://new.com/$1 [R=301,L]
# END DOMAIN REDIRECTS
</IfModule>