O GParted pode fazer isso facilmente. ( link )
Estou assumindo que o Ubuntu é o primeiro e o Windows é o segundo, mas se for o contrário, o procedimento é mais ou menos o mesmo.
- faça o download do ISO
- gravar o ISO em um CD
- inicialize o CD
- escolha todas as opções padrão para o GParted
- selecione o disco rígido correto com a partição do Ubuntu e do Windows
- escolha a ação para reduzir a partição do Ubuntu do lado direito dela
- clique em Aplicar e aguarde o GParted desalocar essa região
- agora mova a partição do Windows para a esquerda, preenchendo o espaço não alocado
- clique em Aplicar e aguarde o GParted mover a partição do Windows
- escolha a ação para redimensionar a partição do Windows e expandi-la até o final da unidade
- aplica alterações quando você está feliz
- reinicializar
Referências adicionais: