By itself the GPL does not include such restrictions, but it neither includes any permission to use trademarked names. Strictly speaking you do not have to do anything.
However, the GPLv3 does have an Additional Terms mechanism that explicitly allows you to add trademark restrictions:
you may […] supplement the terms of this License with terms:
- e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks;
Note that trademark law is very jurisdiction-dependent, whereas copyright law is more harmonized through international treaties such as the Berne Convention or the WIPO copyright treaty. You will probably need professional legal advice to create a widely enforceable Additional Term for the GPLv3.
Such an additional term would perhaps grant use of the trademark for verbatim copies, but require modified versions to use different branding. However, this quickly runs into practical problems if your code base uses branded names e.g. in its APIs. If you want to go down this route, I would strongly advise either allowing use of a trademark within the application (just not for externally visible branding), or to keep your code base completely branding-agnostic, so that any branding is provided by a configuration file that you do not distribute. However, the latter route will also make it easier to create competing branding.
It might be useful to look into the Firefox vs Iceweasel branding history: while Firefox is open source, the Firefox name is trademarked by Mozilla and branding assets like logos used a separate copyright license. Therefore, the Debian project used to consider the Firefox browser as non-free and created a rebranded version.