Firstly, I am not a lawyer nor an expert in such things, so don't assume the following is correct!
I wouldn't change the license of software without the explicit agreement of the authors. If there have been many contributors, this will be difficult unless they have signed over the copyright to someone.
Are you actually going to change the existing code, or just use it? Can you just license your code under GPLv3 and link to the others?
However, the Apache license does say:
You may add Your own copyright
statement to Your modifications and
may provide additional or different
license terms and conditions for use,
reproduction, or distribution of Your
modifications, or for any such
Derivative Works as a whole, provided
Your use, reproduction, and
distribution of the Work otherwise
complies with the conditions stated in
this License.
Which would seem to indicate that you can sub-license it under GPLv3. But remember that you still have to make it clear that you are using Apache licensed code:
You must give any other recipients of
the Work or Derivative Works a copy of
this License; and
You must cause any modified files to
carry prominent notices stating that
You changed the files; and
You must retain, in the Source form of
any Derivative Works that You
distribute, all copyright, patent,
trademark, and attribution notices
from the Source form of the Work,
excluding those notices that do not
pertain to any part of the Derivative
Works;
Unfortunately, GPL2 and GPL3 isn't so easy, see "Why Upgrade to GPLv3":
When we say that GPLv2 and GPLv3 are
incompatible, it means there is no
legal way to combine code under GPLv2
with code under GPLv3 in a single
program. This is because both GPLv2
and GPLv3 are copyleft licenses: each
of them says, “If you include code
under this license in a larger
program, the larger program must be
under this license too.” There is no
way to make them compatible. We could
add a GPLv2-compatibility clause to
GPLv3, but it wouldn't do the job,
because GPLv2 would need a similar
clause.