Here is an idea.
The filtering is done via $_GET
.
So you will need a form that is sent via get to the same page.
You can edit the app/design/frontend/{package}/{theme}/template/catalog/layer/view.phtml
file and add a form around the whole block:
<?php if($this->canShowBlock()): ?>
<form action="<?php echo $this->getClearUrl() ?>" method="get">
.... rest of the template here
...add submit button here
</form>
<?php endif;?>
Then you need to change the links to radio buttons.
So you need to change app/design/frontend/b{package}/{theme}/template/catalog/layer/filter.phtml
and make it look something like this:
<ol>
<?php foreach ($this->getItems() as $_item): ?>
<li>
<?php if ($_item->getCount() > 0): ?>
<?php $name = $_item->getFilter()->getRequestVar();?>
<?php $value = $_item->getValue();?>
<input type="radio" name="<?php echo $name?>" value="<?php echo $value?>" id="filter_<?php echo $name.'_'.$value?>" />
<label for="filter_<?php echo $name.'_'.$value?>"><?php echo $_item->getLabel() ?></label>
<?php else: echo $_item->getLabel() ?>
<?php endif; ?>
<?php if ($this->shouldDisplayProductCount()): ?>
(<?php echo $_item->getCount() ?>)
<?php endif; ?>
</li>
<?php endforeach ?>
</ol>
You might need to add a new radio button above all items that means "no selection" so you can reset the selection. (I have no idea yet how you can do that).
This is enough to get you started (I think).
The problem I see here is that once you filtered by some attributes and you want to apply an other filter your previous filters will be lost.
To overcome this, you might need to change the app/design/frontend/{package}/{theme}/template/catalog/layer/state.phtml
and add some hidden inputs with the values already selected.
something like
<input type="hidden" name="<?php $_filter->getRequestVar()?>" value="<?php echo $_filter->getValue();?>" />
inside the foreach
loop.
The code above is not tested, is just an idea on where to start.