GPL License
As far as I understand it, you can write additional modules, options for software that is under a GLP, and providing that you clearly state that this is separate, you can charge for this software. However, if its supplied under the GPL license or could be considered a part of the main code, it would have to be free and any user is also free to re-distribute it without cost and it should include source code.
If you write something that is linked to a GLP program, as an additional function, then this does not need to be part of (not infected as Ryan puts it) the GLP program.
Extract from GNU
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
One of the simplest formulas that is often used is to keep the program free and charge for updates (an annual license fee, which may include support or support is billed separately) but this will require the author to keep the program working and bug free under the terms of the ALF and support guarantee. In other respects the program would then remain free under GLP rules and also be classed as GLP licensed and have to include source code.
Further information can be read at
http://www.gnu.org/copyleft/gpl.html