Primeiro Problema:
O if de verificação se está vazio e se existe você tem que negativar o isset porq se não sempre vai entrar ali e deixar a quantidade igual a um.
Segundo Problema:
você não sei se isso é uma regra sua da sua aplicação mas sempre vai ser só uma quantidade de um produto no carrinho?
Você deve deixar a quantidade pegar uma variável com a quantidade do item para você acrescentar no carrinho pois se não sempre só vai possibilitar para o usuário comprar 1 quantidade do item desejado, quando o cara for comprar tente também ter uma variável para a quantidade para acrescentar no carrinho.
Exemplo bem porquinho rsrs:
- Na página de compra do produto você deve ter o botão comprar e um campo com a quantidade solicitada do item.
- Ao clicar em comprar, você na hora de verificar o $_GET['acao'] == 'add lá seu e depois acrescentar no carrinho você deve ter que passar também o campo com a quantidade do produto que como exemplo eu escrevi session['carrinho']['qtd'(Que poderia ser $_GET['qtd'] que considero melhor passar por POST)
Desculpe a explicação meio doida, mas se não der pra entender eu tento explicar denovo rsrs
Abs,