Поколупался и дошел до финала, постить получается, код рабочий!
class Model_Vk {
    private $access_token;
    private $url = "https://api.vk.com/method/";
    /**
     * Конструктор
     */
    public function __construct($access_token) {
        $this->access_token = $access_token;
    }
    /**
     * Делает запрос к Api VK
     * @param $method
     * @param $params
     */
    public function method($method, $params = null) {
        $p = "";
        if( $params && is_array($params) ) {
            foreach($params as $key => $param) {
                $p .= ($p == "" ? "" : "&") . $key . "=" . urlencode($param);
            }
        }
        $response = file_get_contents($this->url . $method . "?" . ($p ? $p . "&" : "") . "access_token=" . $this->access_token);
        if( $response ) {
            return json_decode($response);
        }
        return false;
    }
	public function uploadImage($file, $group_id = null, $album_id = null) {
		$params = array();
		if( $group_id ) {
			$params['group_id'] = $group_id;
		}
		if( $album_id ) {
			$params['album_id'] = $album_id;
		}
		//Получаем сервер для загрузки изображения
		$response = $this->method("photos.getUploadServer", $params);
		if( isset($response) == false ) {
			print_r($response);
			exit;
		}
		
		$server = $response->response->upload_url;
		$postparam=array("file1"=>"@".$file);
		//Отправляем файл на сервер
		$ch = curl_init($server);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS,$postparam);
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data; charset=UTF-8'));
		$json = json_decode(curl_exec($ch));
		curl_close($ch);
		
		
		//Сохраняем файл в альбом
		$photo = $this->method("photos.save", array(
			"server" => $json->server,
			"photos_list" => $json->photos_list,
			"album_id" => $album_id,
			"hash" => $json->hash,
			'gid' => $group_id
		));
		
		if( isset($photo->response[0]->id) ) {
			return $photo->response[0]->id;
		} else {
			return false;
		}
	}
}
Использование:
необходим токен, standalone приложение, токен получаем по ссылке
https://oauth.vk.com/authorize?client_id=YOUR_APP_...
где YOUR_APP_ID - id вашего приложения
копируем его из адресной строки
$access_token = "токен";
$group_id = "ид группы";
$album_id = 'ид альбома в который будем грузить';
$image_path = путь к файлу;
$vk = new Model_Vk($access_token);
//Загружаем изображение
$upload_img = $vk->uploadImage($image_path,$group_id,$album_id);